<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國際加速解決方案。 廣告
                # 解構聲明 有時一個對象會很方便地解構到一系列變量中,例如: ``` kotlin val (name, age) = person ``` 這種語法稱為_解構聲明_。解構聲明一次性創建多個變量。我們已經聲明了兩個新變量:`name` 和 `age`,并能夠獨立地使用它們: ``` kotlin println(name) println(age) ``` 解構聲明會編譯成下面的代碼: ``` kotlin val name = person.component1() val age = person.component2() ``` 這里的 `component1()` and `component2()` 函數是在 Kotlin 廣泛使用的_約定原則_(查看運算符,如 `+` 和 `*`,`for` 循環等等。)。解構聲明的右手邊可以是任何東西,只要有必需數量的 component 函數能在它上面調用。而且理所當然地是 `component3()` 和 `component4()`,以此類推。 注意 `componentN()` 函數需要與 `operator` 關鍵字一起標記以允許在解構聲明中使用它們。 解構聲明也在 `for` 循環中工作:當你說 ``` kotlin for ((a, b) in collection) { ... } ``` 變量 `a` 和 `b` 獲得在集合的元素上調用 `component1()` 和 `component2()` 而返回的值。 ## 示例:從一個函數返回兩個值 讓我們說說我們需要從一個函數返回兩個東西。例如,一定順序下的一個結果對象和一個狀態。Kotlin 中做這件事的一個簡便的方式是聲明一個[數據類](data-classes.html)并返回它的實例: ``` kotlin data class Result(val result: Int, val status: Status) fun function(...): Result { // 計算 return Result(result, status) } // 現在,要使用這個函數: val (result, status) = function(...) ``` 數據類自動地聲明 `componentN()` 函數,這里解構聲明可以正常工作。 **注意**:我們也能使用標準類 `Pair` 并有 `function()` 返回 `Pair<Int, Status>`,但它往往有更好的數據命名屬性。 ## 示例:解構聲明和映射 或許遍歷一個映射最佳的方式是這樣的: ``` kotlin for ((key, value) in map) { // 拿這對鍵和值做點什么 } ``` 要讓這正常工作,我們得 * 通過提供一個 `iterator()` 函數讓映射表現得像一個隊列值, * 通過提供函數 `component1()` and `component2()` 讓每組元素表現得像一對。 而且事實上,標準庫提供了這些擴展: ``` kotlin operator fun <K, V> Map<K, V>.iterator(): Iterator<Map.Entry<K, V>> = entrySet().iterator() operator fun <K, V> Map.Entry<K, V>.component1() = getKey() operator fun <K, V> Map.Entry<K, V>.component2() = getValue() ``` 因此你可以在有映射 `for` 循環(數據類實例的集合等等也一樣)中自由地使用解構聲明。
                  <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>

                              哎呀哎呀视频在线观看