0

匿名関数の使用は節約で行う必要があることは知っていますが、

private function getAnonymFct() : Function
{
    return function () : void
    {
        var num : uint = -1;

        if( num < uint.MIN_VALUE )
            trace( "WTF ??" );
        trace( getQualifiedClassName( num ) );
        trace( num );
    }
}

public function Main()
{
    getAnonymFct()();
}

トレースします:

int
WTF ??
-1

私の var num が魔法のように int as typed ではなく int になる理由はありますか?

4

1 に答える 1

1

uintは符号なし整数の省略形です。-1は有効な符号なし整数ではありません。符号付き整数であり、未満ですuint.MIN_VALUE。明らかな実行時エラーを回避するために、アクションスクリプトが num を type に変換したと思いますint

AS では、unsigned と signed の両方が 32 ビットとして格納され、base2 の場合と-1同様に base10 に格納されintます。これを base1011111111111111111111111111111111に変換するとuint、元の数値と4294967295uint.MAX_VALUE10 桁異なります。

于 2014-08-20T10:54:34.593 に答える