Scala Map:是否可以使用 Int 的 var 更新 Int 的值?

Scala Map: is it possible to update a value of Int with a var of Int?

这感觉像是一个愚蠢的问题,但这里是:

考虑以下内容以使用 Int 的 var 更新 Map 中的 Int 值

var score: Int = _

val data = Map((
  ("things", "stuff") -> 0),
  (("uwot", "stuff") -> 0),
  (("isee", "stuff") -> 0))

data.map(element => {
  if (element._1._2 == "stuff") {
    score += 1
  }
  element._2 == score
})

代替

element._2 == score

我也试过了

data(element._1).updated(element._1, score)

val result = data.get(element._1)
result == score

无果

有什么指点吗?

Map data 是不可变的,映射 Map 时得到的 element 也是不可变的。您需要将 data.map(...) 的结果分配给新的 val

element._2 == score 是布尔比较。它也是 map 函数的最后一条语句,因此您将每个元素(类型为 Map[[String,String],Int])映射到布尔值,然后不将其分配给任何东西。

我想你想得到的是这样的:

val dataOut = data.map( element => {
  if(element._1._2 == "stuff") {
     score += 1
  }
  element._1 -> score
  }
)