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
}
)
这感觉像是一个愚蠢的问题,但这里是:
考虑以下内容以使用 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
}
)