我是Kotlin和lambdas的新手,我正试图了解它。我正在尝试生成100个随机数的列表。 这有效:
private val maxRandomValues = (1..100).toList()
但是我想做这样的事情:
private val maxRandomValues = (1..100).forEach { RandomGenerator().nextDouble() }.toList()
但这不起作用。我试图弄清楚如何使用forEach
toList()
生成的值
答案 0 :(得分:10)
最好使用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
(在这种情况下,数字range
从1到100)映射到另一个值。然后,它将返回包含所有这些值的列表。在这种情况下,使用上面的List
构造函数会更有意义,因为您并不是真正地“映射”值,而是创建一个列表