1

我想在函数中获取函数的所有参数名称

例子:

function fct(var1:string,var2:string){
  var names:Array=...
  trace(names);
}

必须跟踪:var1,var2

谢谢!

4

2 回答 2

2

简单地说,这是不可能的。您可以获得的最接近的是参数编号和值。见下文:

function fct( ... args ):void {
    for ( var v:Object in args ) {
        trace( v + ": " + args[v] );
    }
}
var str1:String = "this is a test";
var str2:String = "this is another test";
fct( str1, str2 );

//output
//0: this is a test
//1: this is another test

为了将来参考,您可以使用...+ 一个变量名来允许您需要的任意数量的参数。无论如何,您应该只需要访问而不是实际的变量名,因为无法应用范围(例如)args[ INDEX ],您无论如何都无法访问它variableName[ "propertyName" ]

于 2013-03-22T16:20:56.900 回答
1

不可能像本机方法一样,但您可以使用元数据标签来设置参数名称。我创建了一个简单的例子。但我不明白它如何在实际项目中为您提供帮助:

[Arguments(param1="arg1",param2="arg2")]
public function test(arg1:Number, arg2:Number):void {

    var desc_xml:XML = describeType(Object(this).constructor);
    var metas_xml:XMLList = desc_xml.factory.method.(@name == "test");
    var args_xml:XMLList =   metas_xml.metadata.(@name == "Arguments");

    for each (var argx:XML in args_xml.arg)
    {
        trace(argx.@value.toXMLString());
    }

};

我使用 flex 4.6。不要忘记使用“-keep-as3-metadata+=Arguments”将每个现有的元数据标记添加到编译器参数。它需要编译发布版本。

于 2013-03-22T17:27:55.007 回答