flash get function的参数名称

时间:2013-03-22 14:17:53

标签: actionscript-3 flash function arguments

我想在函数

中获取函数的所有参数名称

示例:

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

必须跟踪:var1,var2

谢谢!

2 个答案:

答案 0 :(得分: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" ]

答案 1 :(得分: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”将每个现有元数据标记添加到编译器参数。它需要编译发布版本。