如何使用未评估(和/或可能未定义)的变量作为函数的参数?例如:
function myFun(a:int):void {
a = 5;
}
如果您熟悉 Mathematica,则相当于:
f[a_Integer]:=a=5
Attributes[f]={HoldAll};
核心思想是我想传递给函数的是变量名本身,而不是当前与变量名相关联的值。
如何使用未评估(和/或可能未定义)的变量作为函数的参数?例如:
function myFun(a:int):void {
a = 5;
}
如果您熟悉 Mathematica,则相当于:
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");
}
根据这些人的说法:如果它是一个类,则在 as3 中获取变量名称的字符串表示形式,您可以获得它的名称。如果它是你不能的局部变量,原因可能与效率有关(名称在编译阶段丢失)
解决问题的另一种方法是使用闭包来更改评估范围。
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
}
}
我没有传递一个值,而是传递了一个绑定在调用范围内的函数,该函数在被调用方的范围内进行评估。