簡(jiǎn)要介紹
Kotlin函數(shù)定義時(shí),支持對(duì)參數(shù)指定默認(rèn)值,這樣就有效減少Java之前定義重載函數(shù)的數(shù)量.
簡(jiǎn)要對(duì)比如下:
- 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");
}
}
- Kotlin定義如下,只需要一個(gè)函數(shù)
class Person {
fun sayHelloTo(firstName: String, lastName: String = "noLastName") {
println("Hi,$firstName $lastName")
}
}
Kotlin函數(shù)默認(rèn)值詳細(xì)規(guī)則
- 可以采用指定全部參數(shù)名和不指定參數(shù)名的調(diào)用方式,推薦采用指定參數(shù)名的調(diào)用方式(不能指定部分函數(shù)參數(shù)名,其他的不指定)
正確樣例:
sayHelloTo("Jerry","Aha")
sayHelloTo(firstName = "Jerry",lastName = "Aha")
錯(cuò)誤樣例:sayHelloTo(firstName = "Jerry","Aha") - 在指定參數(shù)名時(shí),所有無(wú)默認(rèn)值參數(shù)傳入值即可
樣例:sayHelloTo(firstName = "Jerry",lastName = "Aha") - 在不指定參數(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代碼
- 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")
}
}
- 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")
}
}
- 調(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)注:「程序園中猿」
