<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 功能強大 支持多語言、二開方便! 廣告
                [TOC] ### Kotlin相比于Java | 相比于java | 描述??????????????????| | ------- | ------------------- | | 新增??????| 默認參數,形參定義帶上默認值??????| | 優化??????| 命名參數+默認參數,取代繁瑣的重載???| ### [默認參數](http://www.kotlincn.net/docs/reference/functions.html#默認參數) 什么是默認參數?就是,我們**在函數定義的時候,可以給每一個形參,選擇性的給一個默認實參**。默認參數定義格式如下: ![](https://box.kancloud.cn/c4545e72eace676fcffeecd63fd345b4_679x311.png) 我們舉一個具體的方法定義的例子,代碼如下: ![](https://box.kancloud.cn/3885261ab45804b598bb0618fb3d0245_701x226.png) 那如果一個函數,有默認參數我們可以該怎么調用呢?參考代碼: ![](https://box.kancloud.cn/7ab1d8f85dda45a84ab8308f5d1dc4b2_687x645.png) 針對以上代碼,得到些什么結論呢? * 第一,如果方法定義的時候,沒有默認參數,方法調用的時候必須傳遞具體的實參。 * 第二,如果方法帶有默認參數,方法調用的時候可以不用傳遞具體實參,不傳遞實參的情況下,方法使用默認參數。 我們更進一步,**默認參數+命名參數,可以傳遞指定位置的參數**。比如,我們傳遞參數1、3、5,代碼如下: ![](https://box.kancloud.cn/1cd70a5f51298208f8b1452a80cc14f3_683x902.png) 針對以上代碼我們發現,默認參數和命名參數結合起來之后,方法參數多,可以組合出多種調用方法。 如果在Java里面,需要重載好多的方法,才能完成多種形式的調用。 所以,**【Kotlin相比于Java,通過默認參數加命名參數,減少了方法的重載,寫一個方法,可以有多種調用形式】**。 * 關于默認參數和命名參數有如下2個注意的地方。 **第一,帶默認參數的方法,如果不使用命名參數,只能從頭開始賦值。也就是賦值參數1、參數12、參數123、參數1234、參數12345。如果想參數124、參數125之類的是不行的**,參考代碼: ![](https://box.kancloud.cn/be54d48616cb6b8a7bcd696cdca76416_689x375.png) 針對以上代碼,我們看到第24行,26行的調用,編譯器都當我們傳遞的第三個參數是參數3,而不是我們想的參數4和參數5。 **第二,帶默認參數的方法,某一個參數使用了命名參數,后面的參數賦值都需要使用命名參數**。參考代碼: ![](https://box.kancloud.cn/9725d4974e095dfa255e11095ee2bca9_681x529.png) 針對以上代碼,**第二個參數使用了命名參數,后面不管想傳遞參數3還是參數4還是參數5,都需要使用命名才是才能識別了**。 * 第三,**如果一個默認參數在一個無默認值的參數之前,那么該默認值只能通過使用[命名參數](http://www.kotlincn.net/docs/reference/functions.html#命名參數)調用該函數來使用**: 如下圖 ![](https://box.kancloud.cn/a5a7a69a3d7fde238dfb1b4d79fabea1_979x301.png) ~~~ fun httpResponse(IsConnect: Boolean = true, httpCode: Int, response: String): Unit { println("IsConnect:${IsConnect}, "+"httpCode:${httpCode}, "+"response:${response}") } ~~~ 第一個參數有默認參數true,而第二個參數沒有默認參數,上圖中紅色標記的①是正確操作,紅色標記②確實錯誤,idea編輯器也提示我們`The integer literal does not conform to the expected type Boolean`,編輯器以為我們傳遞的是第一個參數IsConnect,所以如果我們要傳入第二、第三個參數只能通過命名參數的方式,即 ~~~ httpResponse(httpCode = 404,response = "Successful") ~~~ * 第四、**如果在默認參數之后的最后一個參數是[lambda 表達式](http://www.kotlincn.net/docs/reference/lambdas.html#lambda-表達式語法),那么它既可以作為命名參數在括號內傳入,也可以在[括號外](http://www.kotlincn.net/docs/reference/lambdas.html#將-lambda-表達式傳給最后一個參數)傳入**:
                  <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>

                              哎呀哎呀视频在线观看