开发lambdaexpression式

var t = 0 fun sumIntMap(hm: HashMap) = hm.forEach{ x -> t+=x.value }.let { t } 

试图在这里用一个函数来总结一个HashMap Int值,我似乎无法优化它,所以它不需要捕获和需要临时var(t)。

我如何使用lambda中的临时variables并返回? 是我如何写它唯一真正的方法(使用let来返回临时variables)?

谢谢!

您可以将您的HashMap条目映射到它们的值以获取Ints列表,然后将该列表中的值相加:

 hm.map { it.value }.sum() 

如果你有一个List而不是一个Map ,你也可以使用foldreduce来做类似的事情,以你的原代码:

 hm.toList().fold(0, { acc, pair -> acc + pair.second })