在Kotlin中生成带有Lambda的列表

时间:2018-11-21 16:29:35

标签: lambda kotlin

我是Kotlin和lambdas的新手,我正试图了解它。我正在尝试生成100个随机数的列表。 这有效:

private val maxRandomValues = (1..100).toList()

但是我想做这样的事情:

private val maxRandomValues = (1..100).forEach { RandomGenerator().nextDouble() }.toList()

但这不起作用。我试图弄清楚如何使用forEach

中使用的toList()生成的值

1 个答案:

答案 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构造函数会更有意义,因为您并不是真正地“映射”值,而是创建一个列表