1. 程式人生 > >kotlin中構造方法和函式引數(二)

kotlin中構造方法和函式引數(二)

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();
}
這跟你想象的一樣複雜。再看看這個例子:
構造方法和函式引數
fun niceToast(message: String,
tag: String = javaClass<MainActivity>().getSimpl
eName(),
length: Int = Toast.LENGTH_SHORT) {
Toast.makeText(this, "[$className] $message", length).show()
}
我增加了第三個預設值是類名的tag引數。如果在Java中總數開銷會以幾何增長。

現在可以通過以下方式呼叫:

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}"。