我知道匿名函数的使用必须用简约法来完成,但是:
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的所有想法?
答案 0 :(得分:1)
类型uint
是无符号整数的简写,-1
不是有效的无符号整数,它是有符号整数且小于uint.MIN_VALUE
。我假设,为避免明显的运行时错误,actionscript已将num转换为类型int
。
在AS中,无符号和有符号都存储为32位,-1
存储在base10中,因为int
在base2中为11111111111111111111111111111111
,将其转换为uint
它将是基数10中的4294967295
,uint.MAX_VALUE
与原始数字不同10个数量级