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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                構建枚舉類似于使用一個簡單的映射構建類: * 沒有參數的枚舉構造函數是變量字段 FVar。 * 帶有參數的枚舉構造函數是方法字段 FFun 。 ~~~ import haxe.macro.Context; import haxe.macro.Expr; class EnumBuildingMacro { macro static public function build():Array<Field> { var noArgs = makeEnumField("A", FVar(null, null)); var eFunc = macro function(value:Int) { }; var fInt = switch (eFunc.expr) { case EFunction(_,f): f; case _: throw "false"; } var intArg = makeEnumField("B", FFun(fInt)); return [noArgs, intArg]; } static function makeEnumField(name, kind) { return { name: name, doc: null, meta: [], access: [], kind: kind, pos: Context.currentPos() } } } ~~~ ~~~ @:build(EnumBuildingMacro.build()) enum E { } class Main { static public function main() { switch(E.A) { case A: case B(v): } } } ~~~ 因為枚舉 E 被使用一個 :build 元數據注解,調用的宏構建兩個構造函數 A 和 B 到它之中。前者被添加使用的類型是 FVar(null, null),意味著它是一個構造函數,沒有參數。后者,我們使用具體化來獲得 haxe.macro.Expr.Function 的一個實例,參數為一個單獨的 Int 。 main 方法通過匹配它,證明了我們生成的枚舉的結構。我們可以發現,生成的類型跟下面這個是等價的: ~~~ enum E { A; B(value:Int); } ~~~
                  <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>

                              哎呀哎呀视频在线观看