我希望得到一個函數的所有參數名稱的功能裏面閃光get函數的參數名稱
例如:
function fct(var1:string,var2:string){
var names:Array=...
trace(names);
}
必須追蹤:VAR1,VAR2
謝謝!
我希望得到一個函數的所有參數名稱的功能裏面閃光get函數的參數名稱
例如:
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" ]
)
我想知道是否每個都會得到這些名字。 – 2013-03-22 22:27:37
剛試過。那不會。 – 2013-03-22 23:14:34
所有循環基本相同。唯一的區別是他們如何運行。 'for each'是'for for(i = 0; i
不可能像本地方法,但是你可以使用元數據標籤來設置參數名稱。我創建一個簡單的例子但我不明白它如何可以幫助你在實際項目中:
[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([email protected]());
}
};
我使用flex 4.6。不要忘記用「-keep-as3-metadata + = Arguments」將每個現有的Metadata標籤添加到編譯器參數中。它需要編譯版本。
我從來沒有見過這種方法。整潔的把戲。無論哪種方式,我同意這對提問者可能需要的東西完全是過度的。 – 2013-03-22 17:30:30
絕對如此,但在我喜歡尋找機會解決方案之後 – 2013-03-22 17:44:29
您可以使用describeType - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#describeType() - 儘管您可能需要將fct函數放入(可能) – 2013-03-22 17:35:03
我不認爲功能實例像其他類實例一樣工作。 – 2013-03-22 22:24:21