为什么Map的+运算符需要双括号?

Lai*_*uan 2 scala

例如:

val m = Map[Int, Int]()
m + (1, 1) // doesn't work!
m + ((1, 1)) // works!
Run Code Online (Sandbox Code Playgroud)

我知道(1, 1)是一个Tuple2,但那么前者为何不起作用?我可以避免这种古怪的双括号吗?

pnd*_*ndc 6

m + (1, 1)是一样的m.+(1, 1),也就是说,它是一个带有两个整数参数的函数调用,而不是一个带有单个Tuple2参数的调用.

但是->,您可以使用哪种形式没有括号的元组:

val m = Map[Int, Int]()
m + 1 -> 1 // works!
Run Code Online (Sandbox Code Playgroud)

或者更有用的:

var m = Map[Int, Int]()
m += 1 -> 1 // works!
Run Code Online (Sandbox Code Playgroud)