<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                Haxe 支持運行時的類型和字段反射。必須注意,因為運行時表示不同目標平臺之間的一般差異。為了正確的使用反射,需要理解哪種類別的操作是被支持的,哪些不是。鑒于反射的動態特性,這不能總是被在編譯時確定。 反射API由兩個類組成: * Reflect : 一個輕量級的API,很好的使用于匿名結構,但是對類的有限支持。 * Type : 適用于類和枚舉的更加健壯的API 。 可用的方法在 Reflect 和 Type API中詳細介紹。 Reflection 是一個強大的工具,但是重要的是,理解它為什么也可能引起問題。舉個例子,一些函數接受一個 String 參數,并試圖解析它為一個類型或者字段。這很容易帶來類型錯誤: ~~~ class Main { static function main() { trace(Type.resolveClass("Mian")); // null } } ~~~ 然而,即使沒有類型錯誤,也很容易遇到意料之外的行為: ~~~ class Main { static function main() { // null trace(Type.resolveClass("haxe.Template")); } } ~~~ 這里的問題是,編譯器從來沒有真正的"看到“ haxe.Template 類型,所以它不會編譯輸出。此外,即使它看到過這個類型,仍然可能從有問題發生,在無用代碼消除(第8.2節)消除的僅通過反射使用的類型或字段。 另一組問題來自于一個事實,一些反射函數有意的接受 Dyanmic(第2.7節) 類型的參數,也就是說,編譯器不能檢查在參數中傳遞的是不是正確的。如下的例子演示了當使用 callMethod 時一個常見的錯誤: ~~~ class Main { static function main() { // wrong //Reflect.callMethod(Main, "f", []); // right Reflect.callMethod(Main, Reflect.field(Main, "f"), []); } static function f() { trace('Called'); } } ~~~ 注釋掉的調用可以被編譯器接受,因為它分配字符串 “f” 到被指定為 Dynamic 類型的函數參數 func 。 當使用反射時一個好的建議是,包裝它到被原本類型安全的代碼調用的一個應用或者API的一些函數中。看一下這個例子: ~~~ typedef MyStructure = { name: String, score: Int } class Main { static function main() { var data = reflective(); // At this point data is nicely typed as MyStructure } static function reflective():MyStructure { // Work with reflection here to get some values we want to return. return { name: "Reflection", score: 0 } } } ~~~ 盡管方法 reflective 能和反射一起使用(對于這個事件,而且是Dynamic),但它返回值是一個類型化的結構,可以使調用者使用類型安全的方式。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看