Kotlin for每个订单

Kotlin forEach是否按照数组的实际顺序遍历一个数组,或者有时可能以另一个顺序? 我的意思是这总是打印1,2,3,… 9或它可能打印这样的1,5,3,4,…

val numbers: Array = array(1,2,3,4,5,6,7,8,9) numbers.forEach({(number: Int) -> Log.d(tag,number) }) 

Kotlin forEach参考

forEach从第一个元素到最后一个元素按顺序迭代; 源代码:

Collections.kt

 /** * Performs the given [action] on each element. */ @kotlin.internal.HidesMembers public inline fun  Iterable.forEach(action: (T) -> Unit): Unit { for (element in this) action(element) } 

是的,它保持真正的秩序。 看执行:

 public inline fun IntArray.forEach(action: (Int) -> Unit): Unit { for (element in this) action(element) } 

For循环使用数组的迭代器,它也保持顺序。

这是两个不同的问题。 是的,正如其他答案所指出的那样,它保持秩序。 但由于forEach不打印任何东西,这一切都取决于打印的执行情况。

例如,这不会总是按顺序打印数字1到10,即使它使用forEach

 fun myPrint(i: Int) = launch { println(i) } (1..10).forEach { n -> myPrint(n) } 

既然我们不知道你的Log.d(...)是如何实现的,我们不能确定。