map foldLeft type mismatch found Int required String

时间:2014-03-25 18:34:48

标签: scala map

我有这张表格的地图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,我会从地图中获取值。

3 个答案:

答案 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)))