如何获取参数的函数类型?

时间:2011-09-29 15:16:54

标签: actionscript-3 actionscript

我想猜测来自匿名函数的每个参数的类型,比如用反射映射一个类,但只是为了一个函数,比如......

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?";

                }

            }

        }

    }

}

1 个答案:

答案 0 :(得分:4)

flash.utils.getQualifiedClassName()在此处引用:Get the type in flex

arguments数组只能从给定函数内部访问。

我不认为你所要求的是可行的,除非你做一些疯狂的尝试/捕捉事情,但如果参数是一个自定义类,那总是会失败,所以它不是一个很好的解决方案。

另一种选择是添加一些描述函数参数的自定义元数据。在每个函数上方[YourMeta(arg1="String",arg2="Array")],然后您可以使用ObjectUtil.getClassInfo(f).metadata来查找该信息。这需要您将YourMeta添加到已编译的元标记args中。

可能还有另一种方法可以通过未发布到ASDocs的内容,但我不知道它。