呼叫方法時,您可以使用參數名稱標記參數,如下所示
def printName(first: String, last: String): Unit =
println(s"$first $last")
printName("John", "Public") // Prints "John Public"
printName(first = "John", last = "Public") // Prints "John Public"
printName(last = "Public", first = "John") // Prints "John Public"
printName("Elton", last = "John") // Prints "Elton John"
當兩個參數具有相同的類型,且參數可能會意外交換時,這很有用。
請注意,命名參數可以按任何順序撰寫。但是,一旦參數不在參數順序中,從左到右讀取,則其餘參數必須命名。
在以下範例中,命名參數允許省略中間參數。但在錯誤情況下,第一個參數順序錯誤,因此必須命名第二個參數。
def printFullName(first: String, middle: String = "Q.", last: String): Unit =
println(s"$first $middle $last")
printFullName(first = "John", last = "Public") // Prints "John Q. Public"
printFullName("John", last = "Public") // Prints "John Q. Public"
printFullName("John", middle = "Quincy", "Public") // Prints "John Quincy Public"
printFullName(last = "Public", first = "John") // Prints "John Q. Public"
printFullName(last = "Public", "John") // error: positional after named argument
命名參數適用於呼叫 Java 方法,但前提是相關的 Java 函式庫使用 -parameters
旗標編譯。