Kotlin函數(shù)默認(rèn)值的完全講解
函數(shù)默認(rèn)值
周所周知,Java語(yǔ)言并不支持參數(shù)使用默認(rèn)值。有人說(shuō)這是因?yàn)椤澳J(rèn)參數(shù)”和“方法重載”同時(shí)支持的話有二義性的問(wèn)題,具體真正的原因我不得而知。但是對(duì)我個(gè)人來(lái)說(shuō),Java不支持這個(gè)特性的確挺讓我蛋疼的,雖然說(shuō)使用方法重載也可以間接實(shí)現(xiàn)與默認(rèn)參數(shù)這個(gè)特性相同的功能,但這就意味著你得寫(xiě)更多的代碼……
簡(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");
}
}
2、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")
}
}
2、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")
}
}
3、調(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")
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Android利用ContentProvider讀取短信內(nèi)容
這篇文章主要為大家詳細(xì)介紹了Android利用ContentProvider讀取短信內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Android開(kāi)源AndroidSideMenu實(shí)現(xiàn)抽屜和側(cè)滑菜單
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)源AndroidSideMenu實(shí)現(xiàn)抽屜和側(cè)滑菜單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android?自定義開(kāi)源庫(kù)?EasyView實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Android自定義開(kāi)源庫(kù)EasyView實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Android開(kāi)發(fā)手冊(cè)自定義Switch開(kāi)關(guān)按鈕控件
這篇文章主要為大家介紹了Android開(kāi)發(fā)手冊(cè)自定義Switch開(kāi)關(guān)按鈕控件的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Android如何在一個(gè)TextView中設(shè)置不同字體大小、不同字體顏色封裝
在開(kāi)發(fā)過(guò)程中遇到過(guò)這樣一種業(yè)務(wù),有很多單行文本字體,字符串中每一部分的字體樣式、大小、顏色都不相同,傳統(tǒng)的做法是放多個(gè)TextView以達(dá)到效果,這篇文章主要介紹了android在一個(gè)TextView中設(shè)置不同字體大小、不同字體顏色封裝,需要的朋友可以參考下2024-07-07
Android組件之DrawerLayout實(shí)現(xiàn)抽屜菜單
DrawerLayout組件同樣是V4包中的組件,也是直接繼承于ViewGroup類,所以這個(gè)類也是一個(gè)容器類。接下來(lái)通過(guò)本文給大家介紹Android組件之DrawerLayout實(shí)現(xiàn)抽屜菜單,感興趣的朋友一起學(xué)習(xí)吧2016-02-02
android實(shí)現(xiàn)在橫豎屏切換時(shí)頁(yè)面信息不被重置的示例分享
這篇文章主要介紹了android實(shí)現(xiàn)在橫豎屏切換時(shí)頁(yè)面信息不被重置的示例,需要的朋友可以參考下2014-02-02
Android在OnCreate中獲取控件的寬度和高度的實(shí)現(xiàn)代碼
在Android中,有時(shí)需要對(duì)控件進(jìn)行測(cè)量,得到的控件寬度和高度可以用來(lái)做一些計(jì)算。在需要自適應(yīng)屏幕的情況下,這種計(jì)算就顯得特別重要2012-11-11

