为什么键入的可选参数的默认值为Null?

时间:2009-06-16 18:15:22

标签: actionscript-3 null arguments optional-parameters

在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
} 

此解决方法或可应用于所有数据类型的通用值?

3 个答案:

答案 0 :(得分:9)

您可以将int更改为Number,然后将其设置为NaN,这是一个特殊数字,表示“非数字”,这可以表示数字的空状态。

要检查某些内容是否为NaN,您必须使用isNaN()函数而不是val == NaN,否则您将无法获得所期望的内容。

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

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

答案 1 :(得分:5)

int变量不能为null,这就是为什么你得到那个错误,只有像对象这样的引用类型可以为null

相反,您可以使用NaN作为特殊数字而不是null。如果你想检查某些东西是否为NaN,你可以使用isNaN函数。

答案 2 :(得分:0)

您还可以在方法签名中包含一个标志,以避免将参数从int提升为数字:

function whatever(intProvided:Boolean = false, someInt:int = 0):void
{
    if(intProvided)
        doSomeStuff();
}