You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中计算月度预测误差遇问题:forEachIndexed返回Unit而非Double

解决forEachIndexed返回Unit无法生成预测误差列表的问题

嘿,我完全懂你碰到的这个坑——forEachIndexed本质上是个执行型遍历函数,它的职责就是遍历集合并执行你给的逻辑,但根本不会返回任何有用的结果(返回值是Unit,也就是啥都没有),所以想用它来生成预测误差列表肯定行不通。

要生成每个月的预测误差(预测值-实际值),你应该用mapIndexed,这个函数专门用来转换集合元素并生成新集合,正好符合你的需求。

示例代码

假设你有两个长度相同的列表:

  • predictions: 存储每月预测值的List<Double>
  • actuals: 存储每月实际值的List<Double>

用mapIndexed生成误差列表的代码如下:

val predictionErrors = predictions.mapIndexed { index, predictedValue ->
    predictedValue - actuals[index]
}

为什么这个可行?

mapIndexed会遍历predictions的每个元素,同时把当前元素的索引和值传给你写的lambda表达式。你只需要在lambda里计算预测值-实际值,mapIndexed会自动把所有计算结果收集成一个新的List<Double>,这就是你要的每月预测误差列表啦。

额外提醒

一定要确保两个列表的长度一致!如果predictions和actuals长度不一样,直接用actuals[index]会抛出索引越界异常。如果存在长度不一致的可能,可以先做个判断:

val predictionErrors = if (predictions.size == actuals.size) {
    predictions.mapIndexed { index, predicted -> predicted - actuals[index] }
} else {
    // 根据你的需求处理,比如返回空列表或者抛出自定义异常
    emptyList()
}

内容的提问来源于stack exchange,提问作者Hasan A Yousef

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:33:15