6

ActionScript 3 では、省略可能な引数にデフォルト値を指定して宣言する場合、値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
} 

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

4

3 に答える 3

9

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

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

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

他のすべてのオブジェクトについては、それらを null に設定できますが、「プリミティブ」番号は Actionscript で異なる方法で処理されます。

于 2009-06-16T18:26:59.963 に答える
5

int 変数を null にすることはできません。そのため、そのエラーが発生します。オブジェクトなどの参照型のみを null にすることができます

代わりに、null の代わりに NaN を特別な数値として使用できます。何かが NaN かどうかを確認したい場合は、isNaN 関数を使用する必要があります。

于 2009-06-16T18:18:40.180 に答える
0

パラメータが int から number に昇格するのを避けるために、メソッド シグネチャにフラグを含めることもできます。

function whatever(intProvided:Boolean = false, someInt:int = 0):void
{
    if(intProvided)
        doSomeStuff();
}
于 2009-06-18T17:58:41.783 に答える