找出ActionScript函数是否具有使用反射的varargs / optional参数?

给定一个ActionScript Function对象,有没有办法确定该函数是否有一个或多个可选参数或vararg参数?
length
属性似乎返回接受的最小参数数量:
function vararg(a:*, b:*, ...rest):void {}
function optional(a:*, b:* = null, c:* = null):void {}

trace(vararg.length);   // 2
trace(optional.length); // 1
我试过反思函数属性:
for (var name:String in optional) {
  trace(name + ": " + optional[name];
}
然而,这根本没有输出任何东西。 有谁知道如何通过反思发现这些信息?     
已邀请:
好吧,我可以让你更近一点,但不是一路走来。 如果在具有该功能的对象上调用
describeType
并且这些功能是公共的,您将获得有关这些功能的更多信息:
var description:XML = describeType(this);
var testFunction:* = description.method.(@name == "optional")[0];

trace(testFunction);
这将为您提供有用的输出:
<method name="optional" declaredBy="MyClass" returnType="void">
  <parameter index="1" type="*" optional="false"/>
  <parameter index="2" type="*" optional="true"/>
  <parameter index="3" type="*" optional="true"/>
  <metadata name="__go_to_definition_help">
    <arg key="file" value="/path/to/MyClass.mxml"/>
    <arg key="pos" value="222"/>
  </metadata>
</method>
它也不会告诉你关于
...rest
varargs的信息。所以,有两个警告:它们必须是公开的,你不会得到varargs ......但是你确实得到了更多信息...... 我不确定你能获得比这更多的信息。 我一直以为
describeType
也需要能够反思私人的东西......但是唉。     
http://bugs.adobe.com/jira/browse/FP-1472是向describeType添加varargs的错误。它的优先级为“无”,这并没有太大希望能够解决这个问题。投票可能会有所帮助。     

要回复问题请先登录注册