You need to enable JavaScript to run this app. Kotlin 1.5中如何用sumOf替代已废弃的sumBy实现同等求和功能
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 21:06:02