我有這樣一類..actionscript:未定義的公共變量?
public class Doc {
public function Doc():void {}
public var myVar:Boolean;
}
我怎麼能知道如果myVar的保存的值爲默認爲false,或有人分配假呢?!?沒有未定義的狀態嗎?我怎樣才能做到這樣的事情?
我有這樣一類..actionscript:未定義的公共變量?
public class Doc {
public function Doc():void {}
public var myVar:Boolean;
}
我怎麼能知道如果myVar的保存的值爲默認爲false,或有人分配假呢?!?沒有未定義的狀態嗎?我怎樣才能做到這樣的事情?
使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;
}
}
你不能使用布爾值,它默認爲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的應該===空,你應該只能夠在此之後將其設置爲布爾值。
但它感覺有點不好意思,我想知道爲什麼你需要分辨不同。
我需要這個,因爲對象被創建,填充(如果部分),然後作爲XML發送。但是如果一個var沒有被設置,我不希望它在xml中被髮送。 – luca 2009-10-11 14:19:24
不,這是一個混亂!你能告訴我一些不同的東西來實現我的目標嗎?點是一些字段可以在數據庫中爲NULL,只有當我不發送它們時(後端是rails) – luca 2009-10-11 14:33:23
這是如何混亂? Getters和setter是非常標準的,並且可以讓你做你想做的事...... Doc.myVar默認爲null,然後只能設置爲布爾值,對於我來說,這聽起來像你要求的? – Simon 2009-10-11 16:10:27
flex框架本身使用這個非常概念的例子來找出值是否已經改變。這是最好的答案。你應該接受它作爲正確的答案;) – 2009-10-15 00:23:44