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,这是一个特殊的数字,表示“不是数字”,这可以代表您的数字的 null 状态。

要检查某物是否为 NaN,您必须使用 isNaN() 函数而不是 not val == NaN,否则您将无法得到您期望的结果。

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

对于所有其他对象,您可以将它们设置为 null,但在 Actionscript 中“原始”数字的处理方式不同。

于 2009-06-16T18:26:59.963 回答
5

int 变量不能为空,这就是您收到该错误的原因,只有对象之类的引用类型可以为空

相反,您可以使用 NaN 作为特殊数字而不是 null。如果你想检查某个东西是否是 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 回答