将未评估的变量作为参数传递

时间:2012-04-09 01:14:20

标签: actionscript-3 function variables parameters

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

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

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

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

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

2 个答案:

答案 0 :(得分: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");
    }

根据这些家伙的说法:get string representation of a variable name in as3如果它是一个classe你可以得到它的名字。如果它是一个你不能的局部变量,原因可能与效率有关(名称在编译阶段会丢失)

答案 1 :(得分: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
    }
}

我传递的函数不是传递值,而是传递一个在被调用者范围内计算的调用范围中绑定的函数。