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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 密封類 密封類用來表示受限的類繼承結構:當一個值為有限幾種的類型、而不能有任何其他類型時。 在某種意義上,他們是枚舉類的擴展:枚舉類型的值集合也是受限的,但每個枚舉常量只存在一個實例,而密封類的一個子類可以有可包含狀態的多個實例。 要聲明一個密封類,需要在類名前面添加 `sealed` 修飾符。雖然密封類也可以有子類,但是所有子類都必須在與密封類自身相同的文件中聲明。(在 Kotlin 1.1 之前,該規則更加嚴格:子類必須嵌套在密封類聲明的內部)。 ```kotlin sealed class Expr data class Const(val number: Double) : Expr() data class Sum(val e1: Expr, val e2: Expr) : Expr() object NotANumber : Expr() ``` (上文示例使用了 Kotlin 1.1 的一個額外的新功能:數據類擴展包括密封類在內的其他類的可能性。) * 一個密封類是自身[抽象的](http://www.kotlincn.net/docs/reference/classes.html#%E6%8A%BD%E8%B1%A1%E7%B1%BB),它不能直接實例化并可以有抽象(*abstract*)成員。 * 密封類不允許有非-*private* 構造函數(其構造函數默認為 *private*)。 * 請注意,擴展密封類子類的類(間接繼承者)可以放在任何位置,而無需在同一個文件中。 * 使用密封類的關鍵好處在于使用 [`when` 表達式](control-flow.html#when-表達式) 的時候,如果能夠驗證語句覆蓋了所有情況,就不需要為該語句再添加一個 `else` 子句了。當然,這只有當你用 `when` 作為表達式(使用結果)而不是作為語句時才有用。 ```kotlin fun eval(expr: Expr): Double = when(expr) { is Const -> expr.number is Sum -> eval(expr.e1) + eval(expr.e2) NotANumber -> Double.NaN // 不再需要 `else` 子句,因為我們已經覆蓋了所有的情況 } ```
                  <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>

                              哎呀哎呀视频在线观看