如何將未評估的(和/或可能未定義的)變量用作函數的參數?例如:將未評估的變量作爲參數傳遞
function myFun(a:int):void {
a = 5;
}
如果你熟悉數學這將是等同於:
f[a_Integer]:=a=5
Attributes[f]={HoldAll};
的核心想法是,它是變量的名字本身,我想傳遞給函數,而不是與變量名稱關聯的當前值。
如何將未評估的(和/或可能未定義的)變量用作函數的參數?例如:將未評估的變量作爲參數傳遞
function myFun(a:int):void {
a = 5;
}
如果你熟悉數學這將是等同於:
f[a_Integer]:=a=5
Attributes[f]={HoldAll};
的核心想法是,它是變量的名字本身,我想傳遞給函數,而不是與變量名稱關聯的當前值。
您可以傳遞一個字符串。使用
private function my_fun(name:String):void {
trace(this[name]);
}
例子:
public class Main extends Sprite {
public var a:int = 5;
....
public function Main():void {
my_fun("a");
}
根據這些傢伙:get string representation of a variable name in as3如果它是一個CLASSE你可以得到它的名字。如果它是一個本地變量,你不能,原因可能與效率有關(在編譯階段該名稱會丟失)
解決此問題的另一種方法是使用閉包來更改評估範圍。
public class A {
public static function myFun(setter:Function):void {
setter(5);
}
}
public class B {
function someOtherFunction() {
var val:Number;
A.myFun(function(v:Number):void { val = v; });
trace(val); // 5
}
}
不是傳遞的值,我傳遞是在在被叫方的範圍評估的調用範圍內綁定的功能。