有没有办法可以将var或const作为actionscript 3中函数参数的默认值。
我可以定义默认值,如null,string,int。
function a( b = null ) { blah... }
但我想做的是
function a( b = function(){} ) { blah... }
似乎有办法。大概通过const
答案 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')
}