我的问题是更多地了解文档.它说:
fun <K, V> Map<out K, V>.forEach(
action: (Entry<K, V>) -> Unit)
Run Code Online (Sandbox Code Playgroud)
但是我不明白如何实现它.我如何获得循环中的键和值?
我想listItems在价格的价值中为每个项目求和.地图将字符串与项目相关联
data class Item(val name: String, val description: String, val price: String, val index: Int)
Run Code Online (Sandbox Code Playgroud)
想象一下listItems包含这个:
listItems ["shirt"] - >名称:衬衫,描述:lorem ipsum,价格:10,指数:0
listItems ["shoes"] - >名称:鞋子,描述:lorem ipsum,价格:30,指数:0
所以代码将是这样的:
var total: Int = 0
listItems.forEach {
total += parseInt(value.price)
}
Run Code Online (Sandbox Code Playgroud)
但是我不明白如何访问这个value引用V文档
hot*_*key 15
您传递给lambda的lambda forEach { ... }接受一个Entry<K, V>,你可以使用这个条目,访问它value:
listItems.forEach { total += parseInt(it.value.price) }
Run Code Online (Sandbox Code Playgroud)
这相当于使用显式lambda参数:
listItems.forEach { entry -> total += parseInt(entry.value.price) }
Run Code Online (Sandbox Code Playgroud)
或者,从Kotlin 1.1开始,您可以在lambda中使用destructuring:
listItems.forEach { (_, value) -> total += parseInt(value.price) }
Run Code Online (Sandbox Code Playgroud)
如果您只需要对值进行求和,则可以使用sumBy { ... }:
val total = listItems.entries.sumBy { parseInt(it.value.price) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6247 次 |
| 最近记录: |