Kotlin 1.5中如何用sumOf替代已废弃的sumBy实现同等求和功能
问题原因
Kotlin 1.5 版本起,旧版sumBy、sumByDouble系列函数正式废弃,统一替换为通用的sumOf函数,支持自动适配返回值类型,功能完全覆盖旧API。
正确修改方案
直接将sumBy替换为sumOf即可,原有逻辑不需要调整,修改后代码如下:
val sum = list.itens.sumOf { item -> when (item.intValueI == item.intValueII) { true -> 1 else -> 0 } }
也可以简化when写法为if表达式,逻辑完全等价:
val sum = list.itens.sumOf { item -> if (item.intValueI == item.intValueII) 1 else 0 }
你尝试的写法存在的问题
- 冗余声明了
intValueI、intValueII局部变量,后续判断逻辑并未使用这两个变量 - 属性名拼写错误,
item.IntValueII应为小写开头的item.intValueII - 不需要显式指定
sumOf的泛型参数<ListItemClass>,编译器可自动推断类型
如果你的业务场景中intValueI、intValueII是可空类型,需要补充空默认值,正确写法如下:
val sum = list.itens.sumOf { item -> val intValueI = item.intValueI ?: 0 val intValueII = item.intValueII ?: 0 if (intValueI == intValueII) 1 else 0 }
内容的提问来源于stack exchange,提问作者João Carlos
相关产品推荐
相关产品推荐

