Apache flex 使用反射查找ActionScript函数是否具有varargs/可选参数?

Apache flex 使用反射查找ActionScript函数是否具有varargs/可选参数?,apache-flex,reflection,actionscript,variadic-functions,optional-arguments,Apache Flex,Reflection,Actionscript,Variadic Functions,Optional Arguments,给定ActionScript函数对象,是否有任何方法可以确定该函数是否有一个或多个可选参数,或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

给定ActionScript函数对象,是否有任何方法可以确定该函数是否有一个或多个可选参数,或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];
}
然而,这根本没有输出任何东西


有人知道如何通过反射来发现这些信息吗?

好吧,我可以让你靠近一点,但不是一路走

如果在具有函数的对象上调用
descripeType
,并且这些函数是公共函数,您将获得有关函数的更多信息:

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。。。但是你会得到更多的信息

我不确定你能得到比这更多的信息


我一直认为
descripbetype
也需要能够对私人内容进行反思。。。但是,唉。

好吧,我可以让你靠近一点,但不是一路

如果在具有函数的对象上调用
descripeType
,并且这些函数是公共函数,您将获得有关函数的更多信息:

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。。。但是你会得到更多的信息

我不确定你能得到比这更多的信息


我一直认为
descripbetype
也需要能够对私人内容进行反思。。。但是,唉。

是在DescripteType中添加varargs的错误。它的优先级为“无”,这并不会给它带来很大的希望。也许投票会有所帮助。

是将varargs添加到DescripteType的错误。它的优先级为“无”,这并不会给它带来很大的希望。也许投票会有所帮助。

同意,Flex的反射支持有点松松垮垮。我希望得到一个比这更令人鼓舞的答案。我的问题是,当我得到函数对象时,我无法找出它来自哪个类。据我所知,这可能是一个匿名函数。看来我运气不好。同意,Flex的反射支持有点松松垮垮。我希望得到一个比这更令人鼓舞的答案。我的问题是,当我得到函数对象时,我无法找出它来自哪个类。据我所知,这可能是一个匿名函数。看来我运气不好。我不认为Adobe对选票有多大影响。在宣布停止Linux端口项目时,Linux上的Flash Builder是投票率最高的问题:-/我认为Adobe对投票没有太大的重视。在宣布停止Linux端口项目时,Linux上的Flash Builder是投票率最高的问题:-/