<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之旅 廣告
                類型構建宏和表達式宏在很多方面是不同的: * 它們不返回表達式,而是一個數組或者類字段。它們的返回類型必須顯式設置為 Array<haxe.macro.Expr.Field> 。 * 它們的上下文環境(第9.1節)沒有局部方法也沒有局部變量。 * 它們的額上下文環境有構建字段,可以從 haxe.macro.Context.getBuildFields() 獲得。 * 它們不會被直接調用,但是是一個類或者枚舉聲明上的 @:build 或者 @:autoBuild 元數據(第6.9節)的一個參數。 如下的例子演示了類型構建。注意,它被分成兩個文件是有原因的:如果一個模塊包含一個宏函數,它也必須類型化到 macro 上下文。 這對類型構建宏來說經常是一個問題,因為要構建的類型只能在它的不完整階段被加載,在構建宏運行之前。我們建議總是定義類型構建宏到它們自己的模塊。 ~~~ import haxe.macro.Context; import haxe.macro.Expr; class TypeBuildingMacro { macro static public function build(fieldName:String):Array<Field> { var fields = Context.getBuildFields(); var newField = { name: fieldName, doc: null, meta: [], access: [AStatic, APublic], kind: FVar(macro : String, macro "my default"), pos: Context.currentPos() }; fields.push(newField); return fields; } } ~~~ ~~~ @:build(TypeBuildingMacro.build("myFunc")) class Main { static public function main() { trace(Main.myFunc); // my default } } ~~~ TypeBuildingMacro 的構建方法執行三步: 1. 它使用 Context.getBuildFields() 獲得構建字段。 2. 它使用 funcNace 宏參數作為字段名聲明一個新的 haxe.macro.expr.Field 字段。這個字段是一個 String變量默認值為 “my default”(來自于 kind 字段),而且是 public static 的(來自于 access 字段)。 3. 它添加新的字段到構建的字段數組,并返回它。 這個宏是Main 類上 @:build 元數據的參數。一旦這個類型被需要的,編譯器就做以下事: 1. 它解析模塊文件,包含類字段。 2. 它設置類型,包含它和其它類型通過繼承和接口產生的關系。 3. 它根據 @:build 元數據 執行類型構建宏。 4. 它使用被類型構建宏返回的字段繼續如常類型化類。 這允許在一個類型構建宏中隨意添加和修改類字段。在我們的例子中,宏被調用,使用了一個 myFunc 參數,使 Main.myFunc 成為一個有效的字段訪問。 如果一個類型構建宏不應修改任何內容,宏可以返回null 。這指示編譯器沒有刻意的改變,更好的是返回 Context.getBuildFields() 。
                  <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>

                              哎呀哎呀视频在线观看