命名引數
呼叫 def
時,可以通過名稱明確指定引數。這樣做意味著無需正確訂購。例如,將 printUs()
定義為:
// print out the three arguments in order.
def printUs(one: String, two: String, three: String) =
println(s"$one, $two, $three")
現在它可以通過這些方式(以及其他方式)呼叫:
printUs("one", "two", "three")
printUs(one="one", two="two", three="three")
printUs("one", two="two", three="three")
printUs(three="three", one="one", two="two")
這導致在所有情況下都列印出 one, two, three
。
如果不是所有引數都被命名,則第一個引數按順序匹配。沒有位置(非命名)引數可能跟隨命名的引數:
printUs("one", two="two", three="three") // prints 'one, two, three'
printUs(two="two", three="three", "one") // fails to compile: 'positional after named argument'