2012-04-09 6 views
0

未評価の(および/または未定義の)変数を関数のパラメータとして使用するにはどうすればよいですか?たとえば:あなたはMathematicaに精通している場合未評価の変数をパラメータとして渡す

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

はそれがに相当します:

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

核となるアイデアは、それは私が関数に渡したい変数の名前そのものではないということでその変数の名前に現在関連付けられている値。

答えて

1

文字列を渡すことができます。使用の

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

例:それはあなたがそれが名前だ得ることができますクラッセかどうget string representation of a variable name in as3

public class Main extends Sprite { 

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

これらの人によります。

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

値を渡す代わりに、呼び出し先スコープで評価される呼び出しスコープでバインドされた関数を渡しています。

関連する問題