2011-12-06 32 views

Trả lời

3

Bạn không thể làm điều đó trong thời gian chạy mà không có thông tin về thời gian biên dịch. Bạn có thể thực hiện việc này với RTTI hoặc bằng Macros. RTTI sẽ dễ triển khai hơn, mặc dù nó có thể chậm hơn một chút nếu bạn cần phân tích cú pháp RTTI nhiều lần.

lớp của bạn sau đó sẽ trở thành:

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

và để có được các loại lĩnh vực:

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

Cảm ơn cho câu trả lời. Có cách nào để thêm thông tin này theo cách thủ công vào lớp (với một số lĩnh vực ẩn ma thuật) không? XML có vẻ là một quá mức rất lớn. – vbence

+0

có, nhưng bạn cần sử dụng macro. Cách dễ nhất là sử dụng macro dựng sẵn (http://haxe.org/manual/macros/build) – Waneck

+0

nhưng bạn cũng có thể thực hiện phân tích cú pháp xml và lưu trữ kết quả trong trường tĩnh – Waneck

Các vấn đề liên quan