我想過濾一個地圖從字符串到斯卡拉整數,我遇到了一個奇怪的問題。斯卡拉匿名功能的問題
如果我把下列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
對不起,如果這是一個愚蠢的問題,但爲什麼與大小寫匹配的模式使用花括號{}但不使用括號? –