我想猜测来自匿名函数的每个参数的类型,比如用反射映射一个类,但只是为了一个函数,比如......
public function guessMyArgumentType(f:Function):void {
for each (argument:* in f.arguments) {
trace(typeof(argument));
}
}
谢谢!
更新
也许这是疯了但是怎么样:
public static function guessMyArgumentType(f:Function):String {
try {
f(2);
return "int";
} catch (error:Error) {
try {
f("a");
return "String";
} catch (error:Error) {
try {
f(["uno", "dos", "tres"]);
return "Array";
} catch (error:Error) {
try {
f(new ArrayCollection(["uno", "dos", "tres"]));
return "ArrayCollection";
} catch (error:Error) {
return "WTF?";
}
}
}
}
}
答案 0 :(得分:4)
flash.utils.getQualifiedClassName()
在此处引用:Get the type in flex
arguments数组只能从给定函数内部访问。
我不认为你所要求的是可行的,除非你做一些疯狂的尝试/捕捉事情,但如果参数是一个自定义类,那总是会失败,所以它不是一个很好的解决方案。
另一种选择是添加一些描述函数参数的自定义元数据。在每个函数上方[YourMeta(arg1="String",arg2="Array")]
,然后您可以使用ObjectUtil.getClassInfo(f).metadata
来查找该信息。这需要您将YourMeta添加到已编译的元标记args中。
可能还有另一种方法可以通过未发布到ASDocs的内容,但我不知道它。