我想过滤一个地图从字符串到斯卡拉整数,我遇到了一个奇怪的问题。斯卡拉匿名功能的问题
如果我把下列REPL:
scala> val myMap = Map("a" -> 1, "b" -> 2, "c" -> 3)
myMap: scala.collection.immutable.Map[java.lang.String,Int] =
| Map(a -> 1, b -> 2, c -> 3)
它的确定,到目前为止,这个工程......
scala> myMap.filter(_._2 > 1)
res9: scala.collection.immutable.Map[java.lang.String,Int] = Map(b -> 2, c -> 3)
但失败...
scala> myMap.filter((k:java.lang.String, v:Int) => v > 1)
<console>:9: error: type mismatch;
found : (java.lang.String, Int) => Boolean
required: ((java.lang.String, Int)) => Boolean
myMap.filter((k:java.lang.String, v:Int) => v > 1)
我的问题是错误信息和多余的括号是怎么回事?如果我尝试添加一组额外的括号,则会出现错误:不是合法的形式参数。
对于'Function.tupled'为+1。 – agilesteel
同意。 Function.tupled是显式的,而模式匹配看起来更像是一个技巧。 – andyczerwonka
对不起,如果这是一个愚蠢的问题,但为什么与大小写匹配的模式使用花括号{}但不使用括号? –