2011-12-06 5 views

答えて

3

実行時にコンパイル時の情報がないと実行できません。 RTTIまたはマクロを使用してこれを行うことができます。 RTTIを複数回解析する必要がある場合は、RTTIを実装する方が簡単ですが、少し遅くなる可能性もあります。

class MyClass implements haxe.rtti.Infos { 
    private var num : Int; 
} 

とフィールドタイプを取得する:

あなたのクラスは、その後になる答えを

var rtti : String = untyped MyClass.__rtti; 
    var x = Xml.parse(rtti).firstElement(); 
    var infos = new haxe.rtti.XmlParser().processElement(x); 
    switch(infos) 
    { 
     case TClassdecl(cl): 
      for (f in cl.fields) 
      { 
       if (f.name == "num") 
       { 
        trace(f.type); 
       } 
      } 
     default: 
    } 
+0

感謝を。この情報をクラスに手動で追加する方法はありますか(いくつかの魔法の隠されたフィールドに)? XMLは巨大な過度の攻撃に見えます。 – vbence

+0

はい、マクロを使用する必要があります。一番簡単な方法は、ビルドマクロ(http://haxe.org/manual/macros/build) – Waneck

+0

を使用することですが、xml解析を一度実行して静的フィールドに結果を格納することもできます – Waneck