我目前正在做这样的事情:
myFunc(tracer);
function tracer(message:String):void{
trace(message);
}
function myFunc(callback:Function):void{
callback("Hello");
}
现在,这很好用。但是,如果给定的回调函数在其签名中接受正确的参数数量和类型,myFunc函数如何知道呢?
我想避免在我的代码中的某个地方调用类似的内容:
myFunc(tracer2);
function tracer2():void{
trace("done");
}
function myFunc(callback:Function):void{
// Argument mismatch!
callback("Hello");
}
有没有办法做这样的事情,以便使用编译器警告/错误消息,从而避免在运行时出现异常?
// Won't work :-(
function myFunc(callback(message:String):Function):{
callback("Hello");
}
答案 0 :(得分:3)
我的理解是,这种情况只能在运行时捕获。 AS3没有为这种类型检查提供机制。我建议如果这很重要,那么通过传递一个带有强类型接口的对象而不是简单地传递一个函数来获得编译时检查,其中所需的类型信息将会丢失。
答案 1 :(得分:1)
我认为您可以在myFunc
中添加第二个参数,该参数将提供有关预期将哪些参数发送到回调函数的信息。
这样,您可以在一个位置myFunc(tracer2,"null")
,在另一个位置myFunc(tracer,"String")
。
我会尝试像
这样的东西function myFunc(callback:Function, ParamRequest:Array /* of String */ ):void{
}