Kotlin函數(shù)默認(rèn)值完全解析

簡(jiǎn)要介紹

Kotlin函數(shù)定義時(shí),支持對(duì)參數(shù)指定默認(rèn)值,這樣就有效減少Java之前定義重載函數(shù)的數(shù)量.
簡(jiǎn)要對(duì)比如下:

  1. Java函數(shù)定義,如果sayHelloTo函數(shù)中的lastName可以使用默認(rèn)值,則需要定義如下兩個(gè)函數(shù).
public class Person {
    public void sayHelloTo(String firstName,String lastName){
        System.out.println("Hi,"+firstName+" "+lastName);
    }
    public void sayHelloTo(String firstName){
        sayHelloTo(firstName,"noLastName");
    }
}
  1. Kotlin定義如下,只需要一個(gè)函數(shù)
class Person {
    fun sayHelloTo(firstName: String, lastName: String = "noLastName") {
        println("Hi,$firstName $lastName")
    }
}

Kotlin函數(shù)默認(rèn)值詳細(xì)規(guī)則

  1. 可以采用指定全部參數(shù)名和不指定參數(shù)名的調(diào)用方式,推薦采用指定參數(shù)名的調(diào)用方式(不能指定部分函數(shù)參數(shù)名,其他的不指定)
    正確樣例:
    sayHelloTo("Jerry","Aha")
    sayHelloTo(firstName = "Jerry",lastName = "Aha")
    錯(cuò)誤樣例:sayHelloTo(firstName = "Jerry","Aha")
  2. 在指定參數(shù)名時(shí),所有無(wú)默認(rèn)值參數(shù)傳入值即可
    樣例:sayHelloTo(firstName = "Jerry",lastName = "Aha")
  3. 在不指定參數(shù)名時(shí),則需要區(qū)分情況:
  • 如果函數(shù)定義時(shí),所有具有默認(rèn)值的參數(shù)都在最后,則可以只傳入無(wú)默認(rèn)值參數(shù)值.
    樣例:
    函數(shù)定義:fun sayHelloTo(firstName: String, lastName: String = "Aha")
    正確樣例:sayHelloTo("Jerry")
  • 如果函數(shù)定義時(shí),具有默認(rèn)值的參數(shù)并不都是在最后面,則必須傳入所有參數(shù)值.
    樣例:
    函數(shù)定義:fun sayHelloTo(firstName: String, middleName: String = "",lastName: String)
    正確樣例:sayHelloTo("Jerry","","Aha")
    錯(cuò)誤樣例:sayHelloTo("Jerry","Aha")

Demo代碼

  1. Person.kt
class Person(
    val firstName: String = "Jerry",
    val lastName: String = "Yin"
) {
    fun sayHello() {
        System.out.println("Hi,$firstName $lastName")
    }

    fun sayHelloTo(firstName: String = "Baby", lastName: String = "Aha") {
        System.out.println("Hi,$firstName $lastName")
    }
}
  1. Person2.kt
class Person2(
    val firstName: String = "Jerry",
    val lastName: String
) {
    fun sayHello() {
        System.out.println("Hi,$firstName $lastName")
    }

    fun sayHelloTo(firstName: String = "Baby", lastName: String) {
        System.out.println("Hi,$firstName $lastName")
    }
}
  1. 調(diào)用代碼:
Person().sayHello()
Person("Jerry1").sayHello()
Person("Jerry2", "Yin2").sayHello()
Person(firstName = "Jerry3").sayHello()
Person(lastName = "Yin4").sayHello()

Person().sayHelloTo()
Person().sayHelloTo("Baby1")
Person().sayHelloTo("Baby2", "Aha2")
Person().sayHelloTo(firstName = "Baby3")
Person().sayHelloTo(lastName = "Aha4")

Person2(lastName = "Yin5").sayHello()
Person2("Jerry6", "Yin6").sayHello()
Person2("", "").sayHelloTo(lastName = "Yin8")
Person2("", "").sayHelloTo("Jerry9", "Yin9")

安卓開(kāi)發(fā)技術(shù)分享: http://www.itdecent.cn/p/442339952f26
點(diǎn)擊關(guān)注專輯,查看最新技術(shù)分享
更多技術(shù)總結(jié)好文,請(qǐng)關(guān)注:「程序園中猿」

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容