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 而不是 uint 作为 typed ?

4

1 回答 1

1

类型uint是无符号整数的简写,-1不是有效的无符号整数,它是有符号整数并且小于uint.MIN_VALUE。我假设,为了避免明显的运行时错误,actionscript 已将 num 转换为 type int

在 AS 中,无符号和有符号都存储为 32 位,-1在 base10 中与在 base2 中一样,将其转换为intbase 10 ,与原始数字相差 10 个数量级11111111111111111111111111111111uint4294967295uint.MAX_VALUE

于 2014-08-20T10:54:34.593 回答