我有这张表格的地图m
m = [(b, 2), (c,3), (d,4)]
我正在尝试使用foldLeft
增加计数m.foldLeft(Map[Char, Int]())((r,c) => r + (c._1 -> r.getOrElse(c._1, 0).t
oInt+1))
我收到这样的错误
<console>:10: error: type mismatch;
found : Int(1)
required: String
m.foldLeft(Map[Char, Int]())((r,c) => r + (c._1 -> r.getOrElse(c._
1, 0).toInt+1))
^
如何解决此问题?如果我不放+1,我会从地图中获取值。
答案 0 :(得分:1)
m.foldLeft(Map[Char, Int]())((r,c) => r + (c._1 -> (r.getOrElse(c._1, 0).toInt+1)))
我必须附上c._1 -> (r.getOrElse(c._1, 0).toInt + 1)
答案 1 :(得分:0)
不确定foldLeft
是您想要的操作。如果要为地图中的每个值添加一个,那么这样做:
scala> m.map(xs => xs._1 -> (xs._2 + 1))
res25: scala.collection.immutable.Map[String,Int] = Map(b -> 3, c -> 4, d -> 5)
答案 2 :(得分:0)
这样做:
m.foldLeft(Map[Char, Int]())((r,c) => r + (c._1 -> (r.getOrElse(c._1, 0).toInt+1)))