Scala 游览

命名参数

语言

在调用方法时,你可以使用其参数名称标记参数,如下所示

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 标志编译时。

本页面的贡献者