我是Kotlin和lambdas的新手,我正在努力理解它.我正在尝试生成100个随机数的列表.这有效:
private val maxRandomValues = (1..100).toList()
Run Code Online (Sandbox Code Playgroud)
但是我想做那样的事情:
private val maxRandomValues = (1..100).forEach { RandomGenerator().nextDouble() }.toList()
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我正在试图弄清楚如何使用生成的值forEach来使用toList()
Ser*_*kin 14
使用kotlin.collections函数执行此操作会更好:
List(100) {
Random.nextInt()
}
Run Code Online (Sandbox Code Playgroud)
根据 Collections.kt
inline fun <T> List(size: Int, init: (index: Int) -> T): List<T> = MutableList(size, init)
Run Code Online (Sandbox Code Playgroud)
也可以像你的情况一样生成使用范围:
(1..100).map { Random.nextInt() }
Run Code Online (Sandbox Code Playgroud)
你不能使用的原因forEach是它返回Unit(有点像voidJava,C#等). map操作 Iterable(在这种情况下range,数字从1到100)将它们映射到不同的值.然后它返回包含所有这些值的列表.在这种情况下,使用List上面的构造函数更有意义,因为您没有真正"映射"值,而是创建一个列表
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |