kotlin中構造方法和函式引數(二)
阿新 • • 發佈:2019-01-02
Kotlin中的引數與Java中有些不同。如你所見,我們先寫引數的名字再寫它的類
型:
fun add(x: Int, y: Int) : Int {
return x + y
}
我們可以給引數指定一個預設值使得它們變得可選,這是非常有幫助的。這裡有一個例子,在Activity中建立了一個函式用來toast一段資訊:
fun toast(message: String, length: Int = Toast.LENGTH_SHORT) {
Toast.makeText(this, message, length).show()
}
如你所見,第二個引數(length)指定了一個預設值。這意味著你呼叫的時候可以傳入第二個值或者不傳,這樣可以避免你需要的過載函式:
toast("Hello")
toast("Hello", Toast.LENGTH_LONG)
這個與下面的Java程式碼是一樣的:
void toast(String message){
}
void toast(String message, int length){
Toast.makeText(this, message, length).show();
}
這跟你想象的一樣複雜。再看看這個例子:構造方法和函式引數
我增加了第三個預設值是類名的tag引數。如果在Java中總數開銷會以幾何增長。fun niceToast(message: String, tag: String = javaClass<MainActivity>().getSimpl eName(), length: Int = Toast.LENGTH_SHORT) { Toast.makeText(this, "[$className] $message", length).show() }
現在可以通過以下方式呼叫:
toast("Hello")
toast("Hello", "MyTag")
toast("Hello", "MyTag", Toast.LENGTH_SHORT)
而且甚至還有其它選擇,因為你可以使用引數名字來呼叫,這表示你可以通過在值前寫明引數名來傳入你希望的引數:
toast(message = "Hello", length = Toast.LENGTH_SHORT)
小提示:String模版你可以在String中直接使用模版表示式。它可以幫助你很簡單地在靜態值和
變數的基礎上編寫複雜的String。在上面的例子中,我使用了"
[$className] $message"。
如你所見,任何時候你使用一個 $ 符號就可以插入一個表示式。如果這個表示式有一點複雜,你就需要使用一對大括號括起來:"Your name is
${user.name}"。