我想在函数
中获取函数的所有参数名称示例:
function fct(var1:string,var2:string){
var names:Array=...
trace(names);
}
必须跟踪:var1,var2
谢谢!
答案 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”将每个现有元数据标记添加到编译器参数。它需要编译发布版本。