私はコトリンとラムダを初めて使い、理解しようとしています。 100個の乱数のリストを生成しようとしています。これは機能します:
_private val maxRandomValues = (1..100).toList()
_
しかし、私はそのようなことをしたいです:
_private val maxRandomValues = (1..100).forEach { RandomGenerator().nextDouble() }.toList()
_
しかし、これは機能していません。 forEach
に生成された値をtoList()
で使用する方法を理解しようとしています
これを行うには、kotlin.collections
関数を使用する方が適切です。
List(100) {
Random.nextInt()
}
Collections.kt
によると
inline fun <T> List(size: Int, init: (index: Int) -> T): List<T> = MutableList(size, init)
あなたの場合のように範囲を使用して生成することも可能です:
(1..100).map { Random.nextInt() }
forEach
を使用できない理由は、Unit
を返すためです(これは、Java、C#などのvoid
のようなものです)。 map
はIterable
(この場合は1から100までの数のrange
)をmapを別の値に演算します。次に、それらすべての値を含むリストを返します。この場合、実際に値を「マッピング」するのではなく、リストを作成するため、上記のList
コンストラクターを使用する方が理にかなっています。