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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ### Kotlin相比于Java | 相比于java | 描述??????????????????| | ------- | ------------------- | | 新增??????| 命名參數,提高代碼可讀寫????????| | 優化??????| 命名參數+默認參數,取代繁瑣的重載???| ### [命名參數 ](http://www.kotlincn.net/docs/reference/functions.html#命名參數) 命令參數是指**在方法調用的時候,傳入實參的時候,可以按照特定格式傳入形參名字**。命名參數又叫具名參數,顧名思義就是指在調用函數時顯示指定形參的名稱,這樣即使形參和實參的順序不一致也不會有任何影響,因為已經明確指定了每個形參對應的實參,這樣有助于提高代碼的可讀性。具名參數的語法格式如下: ``` 函數名稱(形參1=實參1,形參2=實參2,形參3=實參3…) ``` * 形參:全稱為“形式參數”,由于它不是實際存在的變量,因此又稱虛擬變量,是在定義函數名和函數體時使用的參數,目的是用于接收調用該函數時傳入的參數。在調用函數時,實參將賦值給形參。 * 實參:全稱為“實際參數”,是在調用時傳遞給函數的參數。實參可以是常量、變量、表達式、函數等,無論實參是什么類型,在進行函數調用時,實參必須具有確定的值,以便把該值傳遞給形參,因此可提前用賦值、輸入等方法使實參獲取確定的值。 #### 一、命令參數的第一個作用就是提高代碼的可讀性。 命名參數的使用格式如下: ``` methodName(形參名字=實參, 形參名字=實參, 形參名字=實參…) ``` 我們看一段代碼,先不用命名參數,代碼如下: ~~~ fun main(args: Array<String>) { reformat("aa", true, false, true, 'c')//時間久了,自己也不知道這些參數啥意思了 } //命名參數 fun reformat(str: String, normalizeCase: Boolean, upperCaseFirstLetter: Boolean, divideByCameHumps: Boolean, wordSeparator: Char) { //這里是函數體,自由發揮 } ~~~ 針對以上的reformat方法,這個方法沒有去貼方法體,因為不是重點。我們看reformat方法的參數,包含一個Sring類型,三個boolean類型,一個Char類型。所以,第10行,方法調用的時候,就需要進行如下的方式傳遞: ``` reformat("aa",true,false,true,'c') ``` 但是,**這樣長期以往就可能存在一個問題,代碼的可讀性問題。久而久之,只看方法的調用,就會傻傻分不清楚三個boolean實參具體含義了**。 但是,**如果使用命名參數,代碼的可讀性就大大提高了**。我們看一下使用命名參數之后的代碼,代碼如下: ~~~ fun main(args: Array<String>) { //使用命名參數前,時間久了,自己也不知道參數什么意思 reformat("aa", true, false, true, 'c') //使用命名參數,一看就知道參數什么意思 reformat2(str = "aaa", normalizeCase = true, upperCaseFirstLetter = false, divideByCameHumps = true, wordSeparator = 'c') } //使用命名參數前 fun reformat(str: String, normalizeCase: Boolean, upperCaseFirstLetter: Boolean, divideByCameHumps: Boolean, wordSeparator: Char) { //這里是函數體,自由發揮 } //使用命名參數后 fun reformat2(str: String, normalizeCase: Boolean = true, upperCaseFirstLetter: Boolean = true, divideByCameHumps: Boolean = false, wordSeparator: Char = ' ') { //這里是函數體,自由發揮 } ~~~ 如果調用的時候,都這么去寫,代碼的可讀性就大大提高了。所以,**【Kotlin相比于Java,命名參數提高了代碼的可讀性】**。這就是命令參數的第一個作用。其實這個作用已經不明顯,因為高版本的IDEA即使你不寫命名參數,IDEA會自動幫我們顯示,提高代碼的可讀性,參考截圖: ![](https://box.kancloud.cn/9a56fea28a5c4953c0411339566c7550_679x415.png) #### 二、并且如果我們不需要所有的參數: ``` reformat("aa",normalizeCase=true,false,true,'c') ``` #### 三、當一個函數調用混用位置參數與命名參數時,所有位置參數都要放在第一個命名參數之前。 例如,允許調用`f(1, y = 2)`但不允許`f(x = 1, 2)`。 #### 四、可以通過使用**星號**操作符將[可變數量參數(*vararg*)](http://www.kotlincn.net/docs/reference/functions.html#可變數量的參數varargs)以命名形式傳入 ``` fun foo(vararg strings: String) { …… } foo(strings = *arrayOf("a", "b", "c")) ``` #### **五、命名參數的其他作用,需要和默認參數配合起來**。 >[info]【注意】,在調用 Java 函數時不能使用命名參數語法,因為 Java 字節碼并不總是保留函數參數的名稱。
                  <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>

                              哎呀哎呀视频在线观看