2017-12-16 14 views
0

Kotlin forEachは、配列の実数順で配列を繰り返し処理するのですか、それとも時々別の順序でかまいませんか? 、...私は、これは常に1,2,3、... 9を印刷するとはどういう意味か、それがこの1,5,3,4のようなものを印刷することができるためにKotlin forEach order

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

Kotlin forEach reference

答えて

3

forEach反復します最初の要素から最後の要素まで。ソースコード:

Collections.kt

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

ええ、それは本当の順序を保持します。実装を見てください:

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

forループは、配列のイテレータを使用して、順序も保持します。

0

これらは2つの別々の質問です。はい、他の答えによって指摘されているように、それは順序を維持します。しかし、forEachは何も印刷しないので、すべて印刷の実装に依存します。

例えば、これは常にそれがforEachを使用していても、順番に10までの数字1を印刷しません。

fun myPrint(i: Int) = launch { println(i) } 

(1..10).forEach { n -> myPrint(n) } 

私たちはあなたのLog.d(...)が実装されているのか分からないので、私たちがすることはできません確かに。