在actionscript 3中设置函数参数的默认值

时间:2008-12-12 18:51:39

标签: actionscript-3

有没有办法可以将var或const作为actionscript 3中函数参数的默认值。

我可以定义默认值,如null,string,int。

function a( b = null ) {
   blah...
}

但我想做的是

function a( b = function(){} ) {
    blah...
}

似乎有办法。大概通过const

3 个答案:

答案 0 :(得分:8)

奇怪的是,似乎你不能这样做,至少我无法让它工作,它不会接受任何对静态函数的引用作为默认值。

我能做的最好的就是:

public function myFunction(functionArgument:Function = null):void {
    if (functionArgument != null) {
        functionArgument();
    } else {
        defaultFunction();
    }
}

作为旁注,我刚刚发现你实际上可以声明这样的函数:

public static const STATICFUNC:Function = function():void { trace("i'm static!") };

但这似乎与宣布他们理智的方式相同,所以也没有运气。

答案 1 :(得分:1)

参数defaults必须是编译时常量,因为编译时编译器必须输入默认值。这意味着静态函数无论多么可预测,都不能用作参数默认值。编译时常量是编译器通过检查代码而不是实际运行它所知道的值。

答案 2 :(得分:1)

我同意grapefrukt。

但是如果你想在每次通话时创建新对象,你可以这样做:

function myFunction(f:Function = null):void
{
    f = (f != null) ? f : function():void{ trace('new function'); }
}

或当然:

function myFunction(f:Function = null):void
{
    f = (f != null) ? f : defaultFunction; 
}

function defaultFunction():void
{
   trace('default function invoked')
}