<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國際加速解決方案。 廣告
                一個抽象類型在運行時實際上是一個不同的類型。它是一個編譯時功能,在固有類型之上定義來修改或者增強它們的行為的類型: ~~~ abstract AbstractInt(Int) { inline public function new(i:Int) { this = i; } } ~~~ 從這個例子我們可以得出以下幾點 : * 關鍵字 `abstract` 表示我們聲明一個抽象類型 * `AbstractInt` 是抽象類型的名稱,可以是任何符合類型標識符規則的字符 * 圓括號 `()` 中的是潛在的類型 Int * 大括號 `{}` 中的是字段 * 構造函數 `new` 接受一個 Int 類型的參數 **潛在類型** >[warning] **定義**:潛在類型 抽象類型的潛在類型是用來代表抽象類型在運行時的類型。通常是一個具體的(即非抽象的)類型,但是也可以是另一個抽象類型。 這個語法讓人聯想到類,語義上它們事實的確非常相似。實際上,每個在抽象類型“體”中的(即所有花括號之后的一切)都被解析為類字段。抽象類型可以有 [方法(第4.3節)](http://#) 字段和 [非物理(第4.2.3節)](http://#) [屬性(第4.2節)](http://#) 字段。此外,抽象類型可以被像類一樣實例化和使用: ~~~ class Main { static public function main() { var a = new AbstractInt(12); trace(a); //12 } } ~~~ 如前所述,抽象類型是一個編譯時功能,所以看看上面示例實際生成的內容會很有趣。一個合適的目標是 JavaScript,它往往可以生成簡潔干凈的代碼。編譯上面的代碼(使用 `haxe -main MyAbstract -js myabstract.js`)會顯示如下 JavaScript 代碼: ~~~ var a = 12; console.log(a); ~~~ 抽象類型 `Abstract` 在輸出中完全消失了,剩下的只是一個它潛在類型的值,Int。因為 `Abstract` 的構造函數是內聯的 (在 [內聯部分(第4.4.2節)](http://#) 我們將進行學習的內容 ) ,它的內聯表達式分配一個值到這里。當以類進行思考的話,這可能是令人驚訝的。然而,這恰巧是我們希望在抽象類型的上下文中表達的。抽象類型的任何內聯成員方法都可以分配到這里,從而修改 “內部的值”。在這點上,一個好的問題是 “如果一個成員函數沒有被內聯聲明將發生什么”,因為代碼顯然必須放到某個地方。Haxe 創建一個私有類,即已知的實現類,它將所有的抽象成員函數作為接受一個附加的類型為潛在類型的首參數的靜態函數。雖然技術上上這是一個實現細節,但它可以被用于 [選擇函數(第2.8.4節)](http://#)。 >[warning] **花絮**:基本類型和抽象類型 在抽象類型到來之前,所有基本類型都實現為外部類或者枚舉。雖然這很好的考慮了某些方面,如 Int 是 Float 的一個“子類”,但這也在別處引起問題。例如,通過 Float 作為一個外部類,它會和空的結構 `{}` 統一,使得不可能限制一個類型只接受真正的對象。
                  <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>

                              哎呀哎呀视频在线观看