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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### [可變參數](http://www.kotlincn.net/docs/reference/functions.html#%E5%8F%AF%E5%8F%98%E6%95%B0%E9%87%8F%E7%9A%84%E5%8F%82%E6%95%B0varargs):vararg關鍵字 [TOC] #### 可變參數的定義和示例 什么是可變參數?適用于參數個數不確定,類型確定的情況。可變參數通過vararg關鍵字標識,我們可以將其理解為數組。 **Kotlin把可變參數當做數組處理**。可變參數通常聲明在形參列表中的最后位置,如果不聲明在最后位置,那么可變參數后面的其他參數都需要通過命名參數的形式進行傳遞。 **Kotlin的可變參數通過vararg關鍵字實現**。參考代碼: ~~~ fun main(args: Array<String>) { myFun(1, "a", "b", "c") } fun myFun(x: Int, vararg y: String) { println("x:$x") println("y:$y") println("y.size:${y.size}") println("--------可變參數,可以遍歷---------") for (s in y) { println(s) } } ~~~ 運行結果 ``` x:1 y:[Ljava.lang.String;@5e2de80c y.size:3 --------可變參數,可以遍歷--------- a b c Process finished with exit code 0 ``` 針對以上代碼我們可以看到,**被vararg修飾的變量,有size屬性,可以進行遍歷**。 * 示例 ``` fun sum(name:String,vararg scores: Int){ var result = 0 scores.forEach { result += it } println("江小白的總成績:" + result) } fun main(args: Array<String>) { sum("江小白", 100, 99, 98, 100, 96) } ``` 運行結果 ``` 江小白的總成績:493 ``` 在上述代碼中,聲明了一個sum()函數用于求總成績,在該函數中傳遞了一個String類型的參數name與一個可變參數scores。由于可變參數可以當作數組處理,因此可以使用forEach循環遍歷scores中的值,循環中的it表示每次遍歷scores中的元素,然后將這些元素累加并賦值給result,輸出總成績。當在main()方法中調用sum()函數時,需要傳遞一個String類型的實參,以及任意多個Int類型數據,即可得出某人的總成績。 **由于可變參數實質上就是數組,因此,可以直接使用數組存放可變參數,在傳遞時使用數組即可,這樣更加直觀方便**。具體示例代碼如下: ``` var scores: IntArray = intArrayOf(100, 99, 98, 100, 96) sum("江小白", * scores) ``` >[success]需要注意的是,在實參中傳遞數組時,需要使用“*”前綴操作符,意思是將數組展開,它只能展開數組,不能展開集合。 可變參數相對來說比較復雜,當可變參數不在形參列表中的最后位置時,其他形參該如何通過命名參數進行傳遞呢? ``` fun sum(vararg scores: Int, name: String){ var result = 0 scores.forEach { result += it } println("江小白的總成績:" + result) } fun main(args: Array<String>) { sum(100, 99, 98, 100, 96, name = "江小白") } ``` #### **可變參數只能出現在參數列表的最后???** 接收我們編寫一個方法,測試一下**可變參數只能出現在參數列表的最后**這個結論,參考代碼: ![](https://box.kancloud.cn/4c2d22a9e2a54345f02e077cfa9ddd83_681x241.png) 通過以上代碼,我們驗證了“**可變參數只能出現在參數列表的最后**”。 **如果vararg標記的參數不是最后一個參數,需要用[命名參數]傳遞其之后的參數,或者,如果參數具有函數類型,則通過在括號外部傳?個 lambda。** ~~~ fun <T> asList(vararg ts: T, name: String){ for (t in ts) print("$t,") print(name) } fun main(args: Array<String>) { asList(1,2,3,name="lioil.win")//輸出1,2,3,lioil.win } ~~~ 當我們調用`vararg`-函數時,我們可以一個接一個地傳參,例如`asList(1, 2, 3)`,或者,如果我們已經有一個數組并希望將其內容傳給該函數,我們使用**伸展(spread)操作符**(在數組前面加`*`): ``` fun <T> asList(vararg ts: T): List<T> { val result = ArrayList<T>() for (t in ts) // ts is an Array result.add(t) return result } val a = arrayOf(1, 2, 3) val list = asList(-1, 0, *a, 4) ``` #### Kotlin中的可變參數與Java中的可變參數的對比 * [ ] **Kotlin中可變參數規則:** * 可變參數可以出現在參數列表的任意位置; * 可變參數是通過關鍵字vararg來修飾; * 可以以數組的形式使用可變參數的形參變量,實參中傳遞數組時,需要使用“*”前綴操作符。 * [ ] **Java中可變參數規則:** * 可變參數只能出現在參數列表的最后; * 用“…”代表可變參數,“…”位于變量類型與變量名稱之間; * 調用含有可變參數的函數時,編譯器為該可變參數隱式創建一個數組,在函數體中以數組的形式訪問可變參數。 可變參數的特點是參數個數不確定,類型確定的參數。Kotlin中把可變參數當作數組處理。 ``` fun add(vararg arr: Int): Int { var sum = 0 //定義一個變量sum arr.forEach { //對可變參數進行遍歷 sum += it //每循環一次會加上可變參數arr中的值 } /*arr.forEachIndexed { index, i -> println("角標=$index 元素=$i") //打印數組中的角標和元素 }*/ return sum //循環結束,返回參數值的和 } fun main(args: Array<String>) { var result = add(1, 2, 3) //調用add()函數,并把該函數的返回值賦給變量result println(result) //打印變量result } ``` 運行結果 ``` 6 ``` 在上述代碼中,通過fun關鍵字聲明了一個函數add(),在這個函數中傳遞了一個可變參數arr,該可變參數由關鍵字vararg來修飾,同時該可變參數的類型指定為Int。由于可變參數本質上是一個數組,因此可變參數可以通過forEach()循環進行遍歷。在forEach()函數中,it表示每次遍歷的可變參數arr中的元素,每循環一次都會加上it的值,加完之后將最終的值賦給變量sum。在main()函數中調用add()函數,并向該函數傳遞3個Int類型的數據,分別是1、2、3,這3個數據會以數組的形式存放在可變參數arr中,在這里傳遞的數據的個數是任意的。接著將add()函數的返回值賦給變量result,最后打印變量result。
                  <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>

                              哎呀哎呀视频在线观看