【发布时间】:2014-03-26 18:02:47
【问题描述】:
我需要更新(检索和增加)绑定到映射中两个键的两个不同值。这两个键有时会重合。 我现在有以下代码:
// val map: Map[Int, Int]
// val key1, key2: Int
if (key1 == key2) {
tailRecFunction(someArg, map
+ Tuple2(key1, 2 + map.getOrElse(key1, 0)))
} else {
tailRecFunction(someArg, map
+ Tuple2(key1, 1 + map.getOrElse(key1, 0))
+ Tuple2(key2, 1 + map.getOrElse(key2, 0)))
}
如你所见,如果你在key1 == key2 时使用else 块,那么key1 == key2 的值将错误地增加1 而不是2 --- 第二个元组错误地更新原始值,而不是第一个元组应用的值。
有没有更简洁的写法?
【问题讨论】:
-
为什么会被否决?请说明原因,以便我知道我在哪里犯了错误!