Map的foreach方法后面如果用小括号则不正确,如果用大括号则正确,不知为什么原因,具体看如下实验代码:
val map =Map("name"->"zs","age"->10,"add"->"wuhan")
map.foreach{case(k,v) => println(k + v)}
上面的代码可以正确编译,如果换成如下的代码形式:
val map =Map("name"->"zs","age"->10,"add"->"wuhan")
map.foreach(case(k,v) => println(k + v))
则就错误了。
我分析原因可能是case(k,v)=>....这样的语句,当用大括号括起来的时候,在scala中被编译器编译成了一个函数字面量,最终是偏函数。参见:
Scala case语句与偏函数 https://blog.csdn.net/u013571243/article/details/45533561