<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國際加速解決方案。 廣告
                enum 構造器可以使用參數,就像函數那樣。要展示這個功能,一個簡單的查詢生成器,利用Haxe的強類型語法像下面那樣定義: ~~~ enum Condition { TestIsNull(field : String); TestNumber(field : String, operator : NumericOp, value : Float); TestText (field : String, operator : TextOp, value : String); And (tests : Array < Condition > ); Or (tests : Array < Condition > ); } enum NumericOp { Equal; Different; MoreThan; LessThan; } enum TextOp { Same; Like; } ~~~ enum Condition包含每個可能的查詢可以定義的測試的構造器(更多定義也有可能,但是列表為了清晰保持簡潔)。注意 and 和or 的構造器是遞歸的,因為他們使用 Condition 在他們的參數。后面兩個枚舉表示當對比一個字段和value時使用的操作符。 現在需要的是一個工具類來操作你的 enum 。 ~~~ class QueryTools { static public function toSql(q : Condition) : String { return switch(q) { case TestIsNull(field): field + “ IS NULL”; case TestNumber(field, operator, value): field + “ “ + getNumericOp(operator) + “ “ + value; case TestText(field, operator, value): field + “ “ + getTextOp(operator) + “ ‘” + StringTools.replace(value, “’”, “\’”) + “’”; case And(tests): join(tests, “AND”); case Or(tests): join(tests, “OR”); } } private static function join(tests : Array < Condition > , op : String) : String { return “(“ + Lambda.map(tests, toSql).join(“ “ + op + “ “) + “)”; } private static function getNumericOp(op : NumericOp) : String { return switch(op) { case Equal: “=”; case Different: “!=”; case MoreThan: “ > ”; case LessThan: “ < ”; } } private static function getTextOp(op : TextOp) : String { return switch(op) { case Same: “=”; case Like: “LIKE”; } } } ~~~ 在一個switch語句中從構造器提取參數的語法如下: ~~~ switch(name) { case Constructor(p1, p2): /* do something here */; } ~~~ param 沒有指定的類型因為類型直接繼承自構造器定義。 現在可以這樣使用enum: ~~~ class Main { static function main() { var t = And([ TestText(‘name’, Same, ‘John’), TestText(‘lastname’, Same, ‘Doe’), Or([ And([ TestIsNull(‘age’), TestText(‘notes’,Like, ‘%authorized%’), ]), TestNumber(‘age’, MoreThan, 18) ]) ]); trace(QueryTools.toSql(t)); } } ~~~ 這回很好的輸出: ~~~ (name = ‘John’ AND lastname = ‘Doe’ AND ((age IS NULL AND notes LIKE ‘%authorized%’) OR age > 18)) ~~~ 重要的要注意使用 switch 是唯一的可用方式提取關聯構造器的值,無需重現在 Reflection(16章詳細了解)。 就像看到的其他類型,enum還可以使用類型參數。這是一個簡短的例子來輸出: ~~~ enum ValueStatus < T > { NonExistent; Unknown; Known(value : T); } ~~~ 看看第16章的 Reflection API 一節學習如何檢索enum構造器的index ,顯然,當你希望使用enum 索引他們的位置在類型聲明是相關的:第一個構造器聲明有索引0,并且索引值是遞增1的在每個隨后的構造器中。
                  <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>

                              哎呀哎呀视频在线观看