0

如何使用未评估(和/或可能未定义)的变量作为函数的参数?例如:

function myFun(a:int):void {
    a = 5;
}

如果您熟悉 Mathematica,则相当于:

f[a_Integer]:=a=5
Attributes[f]={HoldAll};

核心思想是我想传递给函数的是变量名本身,而不是当前与变量名相关联的值。

4

2 回答 2

1

你可以传递一个字符串。

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 中获取变量名称的字符串表示形式,您可以获得它的名称。如果它是你不能的局部变量,原因可能与效率有关(名称在编译阶段丢失)

于 2012-04-09T03:07:18.100 回答
0

解决问题的另一种方法是使用闭包来更改评估范围。

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
    }
}

我没有传递一个值,而是传递了一个绑定在调用范围内的函数,该函数在被调用方的范围内进行评估。

于 2012-04-09T13:33:32.660 回答