我有以下代码:
val sum = list.itens.sumBy { item ->
when (item.intValueI == item.intValueII) {
true -> 1
else -> 0
}
}
Run Code Online (Sandbox Code Playgroud)
更新到Kotlin 1.5,我收到deprecated警告;我应该如何继续实现相同的功能?
我尝试如下:
val result = list.itens.sumOf<ListItemClass> { item ->
val intValueI = item.value ?: 0
val intValueII = item.valueII ?: 0
when(item.intValueI == item.IntValueII){
true -> 1
else -> 0
}
}
Run Code Online (Sandbox Code Playgroud)
为什么不过滤你的项目并计算它们而不是涉及数学,因为这似乎就是你所追求的?
val sum = list.items.filter { it.intValue1 == it.intValue2 }.size
Run Code Online (Sandbox Code Playgroud)
或者,更简单(感谢评论中的 Tenfour04!):
val sum = list.items.count { it.intValue1 == it.intValue2 }
Run Code Online (Sandbox Code Playgroud)
如果出于某种原因绝对需要使用sumOf,那么一个稍微有点 hacky 的解决方案是:
val sum = list.items.sumOf {
if (it.intValue2 == it.intValue2) 1 else 0 as Int
}
Run Code Online (Sandbox Code Playgroud)
看起来编译器/Android Studio 在返回 1 和 0 时有点困惑,因此需要或else之一。前者比较混乱,但后者会留下 AS 警告。it.intValue1 * 00 as Int
| 归档时间: |
|
| 查看次数: |
812 次 |
| 最近记录: |