Kotlin – “forEachIndexed”和“for”循环之间的区别

我很困惑这些方法的优点和缺点(假设我需要使用indexproduct ):

 products.forEachIndexed{ index, product -> ... } for ((index, product) in products.withIndex()) { ... } 

这里的products是一个简单的集合。

是否有任何表现/最佳实践/等论点比较喜欢一个?

One Solution collect form web for “Kotlin – “forEachIndexed”和“for”循环之间的区别”

不,他们是一样的。 您可以阅读forEachIndexed和withIndex的来源。

 public inline fun  Iterable.forEachIndexed(action: (index: Int, T) -> Unit): Unit { var index = 0 for (item in this) action(index++, item) } public fun  Iterable.withIndex(): Iterable> { return IndexingIterable { iterator() } } 

forEachIndexed使用本地var来计数索引,而withIndex为迭代器创建一个装饰器,它也使用var来计数索引。 从理论上讲,用withIndex创建一个包装层,但性能应该是一样的。

  • 如何将此Java代码转换为Kotlin代码?
  • 使用String name()声明实现Java接口的Kotlin枚举
  • 从Java转换到Kotlin之后,Dagger的模块不工作
  • Kotlin内联属性的用例是什么?
  • 如何从Kotlin代码动态设置权重属性?
  • 带参数的单身人士在Kotlin
  • Android上的Kotlin:将光标映射到列表
  • 在Kotlin中渲染json响应
  • Kotlin:Java 8的哪些function尚未支持?
  • Kotlin无法将gradle的Action类转换为lambda
  • 如何指定一个types参数我不知道
  • Kotlin language will be the best programming language for Android.