Эй, все, название может быть abit вводящим в заблуждение, но я не знал, как правильно его написать.AS3 эквивалент массива ключей PHP
В принципе, как я могу сделать AS3 эквивалент этого кода PHP:
return array('x' => 0, 'y' => 0);
Эй, все, название может быть abit вводящим в заблуждение, но я не знал, как правильно его написать.AS3 эквивалент массива ключей PHP
В принципе, как я могу сделать AS3 эквивалент этого кода PHP:
return array('x' => 0, 'y' => 0);
Вы можете сделать что-то вроде этого
var myArray:Array = new Array({x:'0'},{y:'1'},{x:'2'});
или
var myArray:Array = new Array({x:'0',y:'1'},{a:'1',b:'2'});
private var map:Dictionary = new Dictionary();
map["x"] = 0;
map["y"] = 0;
Словарь обладает некоторыми хорошими преимуществами по сравнению с обычным объектом, но имеет 2 основных недостатка: 1. дополнительные накладные расходы и 2. больше кода для записи (не может просто делать '{x: 0, y: 0}', может использовать только синтаксис, как показано выше) – davr
стандартный способ сделать это так. Главное помнить, что «Object» в AS3 почти эквивалентен ассоциативному массиву PHP.
var obj:Object = {x:0, y:0};
trace(obj['x']); // like in PHP
trace(obj.x); // also valid
// AS3 version of foreach in PHP
for(var key:String in obj) {
trace(key +" = " + obj[key]);
}
Вы можете использовать объекты как ассоциативные массивы, но почему вы помещаете эти объекты в новый массив? –
Это делается так, чтобы массив был смежным. Таким образом, вы можете поддерживать индекс своего массива. Если вам не нужен индекс массива, то лучше использовать объект. – Tempname
Странная вещь об этом методе заключается в том, что теперь вам нужно выполнить 'myArray [0] ['x']', 'myArray [1] ['y']' и т. Д. Вместо просто 'myArray ['x '] 'или' myArray [' y '] '. Большинство людей этого не делают и просто используют простой объект. – davr