правильный код действия, чтобы найти, если объект уже существует (с локальной переменной, определенной внутри условия) - PullRequest
0 голосов
/ 19 марта 2010

У меня есть объект Rect, который я хотел бы создать и установить его свойства только один раз.После этого я хочу просто изменить его свойства, так как он уже существует.Это моя общая идея

if(theRect == undefined){

  Alert.show("creating");

  var theRect:Rect = new Rect();
  //then set properties
  addElement(theRect); //then add it using addElement because addChild() does not work

} else {

  Alert.show("updating");

  //no need to create it since it's already been created
  //just access and change the properties

}

Я попробовал несколько способов и комбинаций для условной проверки if:

if(theRect == undefined){
if(theRect == null){
declaring and not declaring `var theRect:Rect;` before the if check
declaring and instantiating to null before the if check `var theRect:Rect = null;` 

, но не смог получить желаемый эффект.Каждый раз, когда выполняется этот блок кода, и в зависимости от того, какую версию я использовал, он либо выдает ошибку «невозможно получить доступ к нулевому объекту», либо оператор if всегда принимает значение true и создает новый объект Rect, и я получаю «создание»"Оповещение.

Как правильно создать этот Rect, но только если его не существует?

1 Ответ

2 голосов
/ 19 марта 2010

У вас есть некоторые проблемы с областью видимости в коде, который вы представили.

Я думаю, вы хотите сделать следующее:

var theRect:Rect;

...

if(theRect == null)
{
    theRect = new Rect();
    ...
}
...

Вы должны сначала объявить theRect, но вам не нужно его создавать. Вы можете создать его потом лениво, проверив, является ли он нулевым.

Как вы его настроили, вы создали локальную версию theRect внутри вашего if оператора, который не будет виден в другом месте. Вы также получите сообщение об ошибке при попытке доступа к theRect , если вы не объявили его заранее.

...