我想在函数中获取函数的所有参数名称
例子:
function fct(var1:string,var2:string){
var names:Array=...
trace(names);
}
必须跟踪:var1,var2
谢谢!
我想在函数中获取函数的所有参数名称
例子:
function fct(var1:string,var2:string){
var names:Array=...
trace(names);
}
必须跟踪:var1,var2
谢谢!
简单地说,这是不可能的。您可以获得的最接近的是参数编号和值。见下文:
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" ]
不可能像本机方法一样,但您可以使用元数据标签来设置参数名称。我创建了一个简单的例子。但我不明白它如何在实际项目中为您提供帮助:
[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”将每个现有的元数据标记添加到编译器参数。它需要编译发布版本。