0

評価されていない (および/または未定義の可能性がある) 変数を関数のパラメーターとして使用するにはどうすればよいですか? 例えば:

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

Mathematica に精通している場合は、次のようになります。

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

核となる考え方は、変数の名前に現在関連付けられている値ではなく、関数に渡したいのは変数の名前そのものであるということです。

4

2 に答える 2

1

You can pass a string.

private function my_fun(name:String):void {
    trace(this[name]);
}

Example of use:

public class Main extends Sprite {

public var a:int = 5;
    ....
    public function Main():void {
            my_fun("a");
    }

According to these guys: get string representation of a variable name in as3 if it's a classe you can get it's name. If it's a local variable you cannot, the reason is probably related with efficience (the name gets lost on compiling phase)

于 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 に答える