<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                **從Haxe 3.1.0 后:** 一般構建宏每個類型化運行,已經非常強大。在一些情況下,每個類型化運行一個構建宏相反用法,即,當它實際上出現在代碼中。除此之外這允許在宏中訪問具體的類型參數。 @:genericBuild 就像 @:build 一樣使用,通過添加它到一個類型,并使用一個宏調用作為參數: ~~~ import haxe.macro.Expr; import haxe.macro.Context; import haxe.macro.Type; class GenericBuildMacro1 { static public function build() { switch (Context.getLocalType()) { case TInst(_, [t1]): trace(t1); case t: Context.error("Class expected", Context.currentPos()); } return null; } } @:genericBuild(GenericBuildMacro1.build()) class MyType<T> { } class Main { static function main() { var x:MyType<Int>; var x:MyType<String>; } } ~~~ 當運行這個例子,編譯器輸出 TAbstract(Int,[]) 和 TInst(String,[]),表明它確實意識到 MyType的具體類型參數。宏的邏輯可以使用這個信息來生成一個定制類型(使用 haxe.macro.Context.defineType)或者引用一個存在的類型。方便起見,我們在這里返回null,要求編譯器推斷這個類型。 在Haxe 3.1 中,一個 @:genericBuild 宏的返回類型必須是一個 haxe.macro.Type 。Haxe 3.2 允許(也更愿意)返回一個 haxe.macro.ComplexType ,是一個類型語法上的表示。在很多情況下這變得很容易使用,因為類型可以通過它們的路徑簡單的引用。 **Const 類型參數** 如果類型參數名稱是 Const,Haxe 允許傳遞常量表達式(第5.2節)作為一個類型參數。這可以在 @:genericBuild 宏的上下文中被利用來從語法直接到宏傳遞信息: ~~~ import haxe.macro.Expr; import haxe.macro.Context; import haxe.macro.Type; class GenericBuildMacro2 { static public function build() { switch (Context.getLocalType()) { case TInst(_,[TInst(_.get() => { kind: KExpr(macro $v{(s:String)}) },_)]): trace(s); case t: Context.error("Class expected", Context.currentPos()); } return null; } } ~~~ ~~~ @:genericBuild(GenericBuildMacro2.build()) class MyType<Const> { } class Main { static function main() { var x:MyType<"myfile.txt">; } } ~~~ 這里宏的邏輯可以加載一個文件并使用它的內容來生成一個定制類型。
                  <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>

                              哎呀哎呀视频在线观看