Actionscript 3 如何获取参数';函数的类型是什么?
我想从一个匿名函数中猜出每个参数的类型,比如用反射映射一个类,但只针对一个函数,比如Actionscript 3 如何获取参数';函数的类型是什么?,actionscript-3,actionscript,Actionscript 3,Actionscript,我想从一个匿名函数中猜出每个参数的类型,比如用反射映射一个类,但只针对一个函数,比如 public function guessMyArgumentType(f:Function):void { for each (argument:* in f.arguments) { trace(typeof(argument)); } } 谢谢 更新 也许这太疯狂了,但是: public static function guessMyArgumentType(f:
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?";
}
}
}
}
}
flash.utils.getQualifiedClassName()
此处引用:
arguments数组只能从给定函数内部访问
我不认为你的要求是可行的,除非你做了一些疯狂的尝试/捕获的事情,但如果参数是自定义类,那么这将总是失败的,所以这不是一个很好的解决方案
另一个选项是添加一些描述函数参数的自定义元数据<代码>[YourMeta(arg1=“String”,arg2=“Array”)]位于每个函数上方,然后使用ObjectUtil.getClassInfo(f).metadata
查找该信息。这需要将元添加到已编译的元标记args中
可能还有另一种方法可以通过未发布到ASDocs的内容,但我不知道。
flash.utils.getQualifiedClassName()
,如此处所述:
arguments数组只能从给定函数内部访问
我不认为你的要求是可行的,除非你做了一些疯狂的尝试/捕获的事情,但如果参数是自定义类,那么这将总是失败的,所以这不是一个很好的解决方案
另一个选项是添加一些描述函数参数的自定义元数据<代码>[YourMeta(arg1=“String”,arg2=“Array”)]位于每个函数上方,然后使用ObjectUtil.getClassInfo(f).metadata
查找该信息。这需要将元添加到已编译的元标记args中
可能还有另一种方法可以通过未发布到ASDocs的内容,但我不知道。+1感谢元数据提示!。我将通过传递desire casting类型作为参数来解决这个问题。+1感谢元数据提示!。我将通过传递欲望类型作为参数来解决这个问题。