В AS3 как установить для объекта, переданного в качестве параметра функции, значение null? - PullRequest
1 голос
/ 12 сентября 2009

Прямо сейчас, этот код

var gridArray:Array = [[],[],[],[],[],[]];
gridArray[0][0] = new gridProperties;
//gridProperties has gridX and gridY i.e. gridArray[0][0].gridX

function clearGridSquare(gridSquare:gridProperties):void
{
gridSquare = null;
}

function test():void
{
clearGridSquare(gridArray[0][0]);
trace (gridArray[0][0]);
}

производит

[object gridProperties]

вместо нуля. Я понимаю, что поскольку объект является ссылкой, даже если он технически передается в качестве значения функции, он действует так, как если бы он был передан в качестве ссылки. Таким образом, я могу изменить, скажем, свойства gridX или gridY исходного объекта изнутри функции (gridSquare.gridX = 1), но я не могу фактически сделать сам объект нулевым. Я обнаружил, что могу сделать его нулевым, если вместо этого сделаю это в функции:

gridArray[gridSquare.gridY][gridSquare.gridX] = null;

но, похоже, я действительно плохой и окольный способ сделать это. Есть ли более элегантное решение?

1 Ответ

2 голосов
/ 12 сентября 2009

Вы не можете сделать объект нулевым, потому что "gridSquare" является ссылкой на "gridArray [0] [0]". Таким образом, устанавливая «gridSquare», вы просто устанавливаете локальную ссылку на данные «gridArray [0] [0]» на NULL, а на фактические данные - NULL. Вместо этого я бы попросил вашу функцию взять первый и второй индексы в массив, который вы хотите обнулить. Тогда в функции вы можете сделать ...

gridArray[i][j] = null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...