actionscript: неопределенные публичные переменные? - PullRequest
2 голосов
/ 11 октября 2009

У меня есть такой класс ..

public class Doc {
  public function Doc():void {}

  public var myVar:Boolean;
}

Как я могу узнать, что значение myVar по умолчанию равно false или кто-то присвоил ему значение false?!? Нет ли неопределенного состояния? Как я могу достичь такой вещи?

Ответы [ 2 ]

5 голосов
/ 11 октября 2009

Сделайте myVar свойством и используйте другую переменную, чтобы проверить, было ли оно установлено явно.

public class Doc 
{
  public function Doc():void {}

  private var _myVar:Boolean;
  private var myVarSetExplicitly:Boolean = false;
  public function get myVar():Boolean
  {
    return _myVar;
  }
  public function set myVar(value:Boolean):void
  {
    myVarSetExplicitly = true;
    _myVar = value;
  }
}
0 голосов
/ 11 октября 2009

Вы не можете использовать логическое значение, по умолчанию используется false и false === false.

Вы не могли бы строго ввести переменную, а затем использовать метод получения и установки для защиты типа

public class Doc {
  private var _myVar;

  public function set myVar(value:Boolean){
    _myVar = value;
  }

  public function get myVar(){
    return _myVar;
  }
}

Теперь, когда он не установлен, myVar должен === null, и после этого вы сможете установить только логическое значение.

Но это выглядит немного странно, и мне интересно, почему вы должны заметить разницу.

...