2009-10-11 2 views
2

У меня есть класс, как это ..actionscript: неопределенные общедоступные переменные?

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

    public var myVar:Boolean; 
} 

Как я могу знать, если значение принадлежит MYVAR по умолчанию ложным, или кто-то присвоил ложь ему?!? Разве нет неопределенного состояния? Как я могу достичь такого?

ответ

5

Создайте свойство 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

flex framework сам использует примеры этой самой концепции, чтобы узнать, было ли изменено значение. Это лучший ответ. Вы должны принять его как правильный ответ;) –

0

Вы не можете с помощью boolean по умолчанию использовать false и false === false.

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

public class Doc { 
    private var _myVar; 

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

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

Теперь, когда его не установлен MYVAR должен === нуль, и вы должны быть только в состоянии после этого установить его в boolean.

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

+0

Мне это нужно, потому что объект создается, заполняется (если частично), а затем отправляется как XML. Но если var не был установлен, я не хочу, чтобы он вообще отправлялся в xml. – luca

+0

нет, это беспорядок! Можете ли вы предложить мне что-то другое для достижения моей цели? point - некоторые поля могут быть NULL в базе данных, и они только в том случае, если я их не отправлю. (backend is rails) – luca

+0

Как это беспорядок? Getters и seters довольно стандартны и позволят вам делать то, что вы хотите ... Doc.myVar по умолчанию имеет значение null, а затем может быть установлен только на логическое значение, которое для меня звучит точно так, как вы просите? – Simon

Смежные вопросы