2009-06-16 13 views
6

ActionScript 3では、オプションの引数にデフォルト値を指定して宣言すると、値nullを型付き引数に使用できません。型付きのオプション引数の既定値がNullでないのはなぜですか?

function Action(Param:int=null){ 
    // 1184: Incompatible default value of type Null where int is expected. 
} 
function Action(Param:int=0){ 
    // No compiler errors 
} 

これに対する回避策、またはすべてのデータ型に適用できる汎用値はありますか?

答えて

9

intをNumberに変更してから、それをNaNに設定することができます。このNaNは「数字ではない」という特別な数字で、Numberのnull状態を表すことができます。

何かがNaNかどうかをチェックするには、val == NaNではなくisNaN()関数を使用する必要があります。そうしないと、期待通りの結果が得られません。

function Action(param:Number = NaN) : void { 
    trace(param); 
} 

他のすべてのオブジェクトの場合はnullに設定できますが、「プリミティブ」の数字はActionscriptで別々に処理されます。

5

int型の変数はnullにすることはできません、それはあなたがそのエラーを取得する理由は、オブジェクトと同様にのみ参照型が代わりにあなたは特別な番号の代わりに、ヌルとしてはNaNを使用することができます

nullにすることができます。何かがNaNであるかどうかを確認したい場合は、isNaN関数を使用してください。

0

あなたはまた、数にint型から昇格のパラメータを持つ避けるために、メソッドシグネチャ内のフラグを含めることができます

function whatever(intProvided:Boolean = false, someInt:int = 0):void 
{ 
    if(intProvided) 
     doSomeStuff(); 
} 
関連する問題