kotlin - 为什么常规 for 循环优于 forEach?
问题描述
来自Kotlin 的编码约定:
更喜欢使用高阶函数(过滤器、映射等)而不是循环。例外:forEach(最好使用常规的 for 循环,除非 forEach 的接收者可以为空或 forEach 被用作较长调用链的一部分)。
这是为什么?我为什么要使用:
val evenDigits = intArrayOf(0, 2, 4, 6, 8)
for (digit in evenDigits)
println(digit)
代替:
intArrayOf(0, 2, 4, 6, 8).forEach { println(it) }
解决方案
从性能和效率的角度来看for
,有时会更快一些,因为forEach
在某些情况下使用可能会创建一些额外的对象/对象,但这并不明显。
我能注意到的唯一区别是,在使用时forEach
您不必break
退出循环,可能还有其他方法可以实现它,但我认为这不会那么可读并且可能会令人困惑。
的行为continue
可以通过 using 来实现,return@forEach
但这并不能清楚地说明您实际在做什么,而continue
确实如此,尤其是在阅读代码的人不是 kotlin 专家的情况下。
推荐阅读
- flutter - Flutter 中关于 LATLNG 包和 LatLng 类型的问题
- firebase - 被部署在 Firebase Functions 上的快速服务器的 CORS 策略阻止,即使定义了 cors
- python - 从一个视频中重建 Veritasium 的情节
- android - 检查我的 Android 设备相机是否支持 HDR
- reactjs - 元素访问表达式应该有一个参数.ts(1011)
- google-cloud-platform - 为什么我在部署虚拟机或购买域时没有消耗我在谷歌云中的免费积分,这是否意味着我的卡正在收费?
- google-cloud-platform - 在欧洲 (EU) 使用 bigquery 数据时应使用哪个数据流区域
- swiftui - 在 iOS WidgetKit 小部件中右对齐 Text(Date(), style: .timer) 文本
- android - 如何从 APK 转储文件?
- python - 如何在列表中添加所有相同的浮点值,然后将这些值放在新列表中