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(...)
是如何实现的,我们不能确定。