2012-04-09 2 views
0

Как использовать неоцененную (и/или возможно неопределенную) переменную в качестве параметра для функции? Например:Передать неоценимую переменную в качестве параметра

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

Если вы знакомы с Mathematica было бы эквивалентно:

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

Основная идея в том, что это имя переменной самой, которую я хочу, чтобы перейти к функции, не значение, которое является текущим, связанным с именем переменной.

ответ

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 вы можете получить это имя. Если это локальная переменная, которой вы не можете, причина, вероятно, связана с эффективностью (имя теряется на этапе компиляции)

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

Вместо того, чтобы передать значение, я передаю функцию, которая связана в вызывающей области, которая оценивается в объеме вызываемого в.

Смежные вопросы