Kotlin 預設參數與具名參數
這是 Kotlin 為了解決 Java「過多重載 (Overloading)」問題的神器。
預設參數 (Default Arguments)
你可以直接在函式定義時給參數預設值。
fun greet(name: String = "World") {
println("Hello, $name")
}
greet() // 輸出 "Hello, World"
greet("Miko") // 輸出 "Hello, Miko"
這樣你就不需要為了有沒有傳 name 寫兩個函式了!
具名參數 (Named Arguments)
當參數很多時,呼叫起來很容易搞混順序。 Kotlin 允許你在呼叫時指定參數名稱。
fun formatText(text: String, bold: Boolean = false, italic: Boolean = false) {
// ...
}
// 呼叫時
formatText("Hello", italic = true) // text="Hello", bold=false, italic=true
formatText(text = "Hello", bold = true)
好處:
- 程式碼可讀性極高。
- 即使中間有參數跳過不傳(使用預設值),也不會亂掉。
Java 互通性 (@JvmOverloads)
Java 不支援預設參數。如果你直接在 Java 呼叫上面的 greet(),你必須傳入 name,不能省略。
如果你想要讓 Java 也能享受到「重載 (Overloading)」的效果,請加上 @JvmOverloads。
@JvmOverloads
fun greet(name: String = "World") { ... }
編譯器會自動幫你產生兩個 Java 方法:
greet(String name)greet()(自動呼叫greet("World"))