Имена динамических переменных в статической функции - PullRequest
2 голосов
/ 15 декабря 2011

Есть ли способ, которым вы можете иметь динамические переменные внутри статической функции, учитывая, что вы не можете использовать "this" внутри динамической функции.

Что я пытаюсь сделать:

public static function convertToDynamicString(pString:String):String
{
    if(pString == "" || pString == null) return "";
    var re:RegExp = /(\{\w+\})/;
    var results:Array = pString.split(re);
    var dynamicString:String = "";
    for each(var pWord:String in results)
    {
        if(pWord.substr(0, 1) == "{") dynamicString += this[pWord.substring(1, (pWord.length - 1))];    
        else dynamicString += pWord;
    }
    return dynamicString;
}

Проблема:

это ["имя переменной"] не работает в статических функциях

Ответы [ 3 ]

5 голосов
/ 15 декабря 2011

Не уверен, что вы хотите, чтобы «this» ссылался, но, если у вас есть класс с именем «Foo», который содержит вашу статическую функцию, просто используйте Foo[str];

В качестве альтернативы, создайте статический локальный объект:

private static var _this:Object = {//your dynamic stuff}

А затем используйте «_this».

0 голосов
/ 15 декабря 2011

Если вам нужно обратиться к свойству статического класса, вы можете использовать
StaticClassName.staticProperty

public static class MyClass{
   public static myProperty:*

   ....

   public static function someFunction():void{
       MyClass.myProperty 
       }

   }

Если вы хотите сослаться на экземпляр из статического класса, нет способа (как вы сказали) использовать ключевое слово this . Во всяком случае, есть работа вокруг. Вы можете объявить параметр instance и передать экземпляр статическому методу

вот код:

public static class Myclass{
    public static function myFunc(parm1:*,param2:*,instance:[type of the istance or generic *]):void{

   ....now you can use instance.property!!!!  
   }  
}

и тогда вы можете назвать это так

 MyClass.myFunc('foo','bar',this)

Надеюсь, это поможет вам.
Bye!
Люк

0 голосов
/ 15 декабря 2011

Вы можете передать все, что нужно вашей статической функции из экземпляра (в качестве аргументов). Другими словами, экземпляр может видеть и ссылаться на статику, но статические функции не могут видеть или ссылаться на конкретный экземпляр.

...