2011-12-14 14 views
2

動的関数内に "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; 
} 

問題:

この[ "変数名"]は、あなたが "これを" 望むものを静的関数

+1

これは、クラスのインスタンスを作成したことを意味します.Class.convertToDynamicString()を実行しても発生しません。 – Frank

答えて

5

わからないでは動作しません。静的関数を含む "Foo"という名前のクラスがあると仮定すると、Foo[str];

静的ローカルオブジェクトを作成します。

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

「_this」を使用してください。

0

インスタンスから必要な静的関数にすべてを(引数として)渡すことができます。言い換えれば、インスタンスは静的情報を参照および参照できますが、静的関数は特定のインスタンスを参照または参照できません。

0

あなたは静的クラスのプロパティを参照する必要がある場合は、静的クラスからインスタンスを参照したい場合は、あなたが言ったように手立ては(ありません
StaticClassName.staticProperty

public static class MyClass{ 
    public static myProperty:* 

    .... 

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

    } 

を使用することができます)こののキーワードを使用しています。とにかく回避策があります。

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) 

はこれが役立つことを願って、このようにそれを呼び出すことができます。あなたは

がここ

静的メソッドにインスタンスパラメータを宣言し、インスタンスを渡すことができますコードです君は。
さよう!
ルーク