2009-10-11 41 views
2

我有這樣一類..actionscript:未定義的公共變量?

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

    public var myVar:Boolean; 
} 

我怎麼能知道如果myVar的保存的值爲默認爲false,或有人分配假呢?!?沒有未定義的狀態嗎?我怎樣才能做到這樣的事情?

回答

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框架本身使用這個非常概念的例子來找出值是否已經改變。這是最好的答案。你應該接受它作爲正確的答案;) – 2009-10-15 00:23:44

0

你不能使用布爾值,它默認爲false和false === false。

你會未能嚴格輸入變量,然後使用一個getter和setter保護類型現在

public class Doc { 
    private var _myVar; 

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

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

,當其未設置myVar的應該===空,你應該只能夠在此之後將其設置爲布爾值。

但它感覺有點不好意思,我想知道爲什麼你需要分辨不同。

+0

我需要這個,因爲對象被創建,填充(如果部分),然後作爲XML發送。但是如果一個var沒有被設置,我不希望它在xml中被髮送。 – luca 2009-10-11 14:19:24

+0

不,這是一個混亂!你能告訴我一些不同的東西來實現我的目標嗎?點是一些字段可以在數據庫中爲NULL,只有當我不發送它們時(後端是rails) – luca 2009-10-11 14:33:23

+0

這是如何混亂? Getters和setter是非常標準的,並且可以讓你做你想做的事...... Doc.myVar默認爲null,然後只能設置爲布爾值,對於我來說,這聽起來像你要求的? – Simon 2009-10-11 16:10:27