命名引數

呼叫 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'