这感觉就像一个愚蠢的问题,但这里有:
请考虑以下内容,使用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
无济于事
任何指针?
答案 0 :(得分:4)
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
}
)