标签: kotlin
var t = 0 fun sumIntMap(hm: HashMap<Int,Int>) = hm.forEach{ x -> t+=x.value }.let { t }
尝试使用函数对Hashmap Int值进行求和,我似乎无法对其进行优化,因此无需捕获并需要temp var(t)。
如何在lambdas中使用临时变量并返回它们?我是如何编写它的唯一真实方式(使用let来返回temp var)?
谢谢!
答案 0 :(得分:4)
您可以将HashMap条目映射到其值以获取Ints列表,然后对该列表中的值求和:
HashMap
hm.map { it.value }.sum()
如果您使用List而不是Map,则还可以使用fold或reduce对原始代码执行类似操作:
List
Map
fold
reduce
hm.toList().fold(0, { acc, pair -> acc + pair.second })