<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國際加速解決方案。 廣告
                # 1. 什么是高階函數 `Lambda`表達式還可以作為函數的**實際參數或者返回值**存在,而這種聲明,在`Kotlin`中叫做**高階函數**。 # 2. 將Lambda作為參數 比如下面的案例: ~~~ /** * 排序列表 */ fun sort(list: List<Int>, function: (Int, Int) -> Boolean): List<Int> { var temp = list.toMutableList() var len = list.size for(i in 0..(len - 1)){ var index = i for(j in (i+1)..(len - 1)){ if(function(temp[index], temp[j])){ index = j } } if(index != i){ var t = temp[i] temp[i] = temp[index] temp[index] = t } } return temp } fun printList(list: List<Int>){ for (i in list) { print("${i}\t") } println() } fun main() { var a = listOf<Int>(1, 2, 3, 4, 1, 8, 0) var temp = sort(a, {c: Int, b: Int -> c > b}) printList(temp) } ~~~ 結果: ``` 0 1 1 2 3 4 8 ``` 當然如果需要逆序,只需要修改為: ``` var temp = sort(a, {c: Int, b: Int -> c < b}) ``` 上面的案例是兩個參數的情況,這里有種特殊情況:函數類型滿足**只接收一個參數**的要求,可以用`it`關鍵字代替函數的形參以及箭頭。比如下面的案例: ~~~ /** * 判斷一個數是否是2的n次冪 */ fun Int.judgement(condition: (Int) -> Boolean): Boolean { return condition(this) } fun main() { var a = 4 // var result = a.judgement({ x: Int -> (x.and (x - 1)) == 0 }) var result = a.judgement { (it.and (it - 1)) == 0 } println(result) } ~~~ # 3. 作為返回值 在[Kotlin從基礎到實戰-黑馬程序員編著-微信讀書 (qq.com)](https://weread.qq.com/web/reader/ab3320e0718ade85ab3fd1cka87322c014a87ff679a21ea)這本書中給了一個案例,感覺能很好的說明這個問題,這里摘要一下。模擬普通用戶與`VIP`用戶購物的案例: ~~~ /** * 會員打8折 */ fun getPrice(user: USER): (Double) -> Double{ if(user == USER.NORMAL){ return {it} } return {it -> it * 0.8} } fun main() { // 因為返回的是一個函數,所以還可以進行傳入一個Double類型的數據,然后執行 println(getPrice(USER.NORMAL)(300.0)) println(getPrice(USER.VIP)(300.0)) } ~~~ 結果: ``` 300.0 240.0 ```
                  <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>

                              哎呀哎呀视频在线观看