lambda - 在 kotlin 中生成带有 lambda 的列表
问题描述
我是 Kotlin 和 lambdas 的新手,我正在努力理解它。我正在尝试生成一个包含 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
(这有点像void
Java、C# 等)。 map
操作 Iterable
(在这种情况下是range
从 1 到 100 的数字)将它们映射到不同的值。然后它返回一个包含所有这些值的列表。在这种情况下,使用List
上面的构造函数更有意义,因为您并不是真正“映射”值,而是创建一个列表
推荐阅读
- html - 同一行具有相同尺寸的两个兄弟姐妹
- php - MySQL - 使用带有 UNHEX() 函数的 LIKE 运算符
- python - 使用 beautifulSoup 检索 html 标签内容
- python - 如何结合在不同数据集上训练的两个逻辑回归模型?
- sql - GORM 没有返回结果,但是当我在我的数据库客户端中运行 SQL 查询时,记录又回来了
- firebase - 部署到特定的子域。使用命令行 firebase 托管或指定要使用的 json
- python - 熊猫,将两列中的字符串组合为绘图中的刻度值
- javascript - 测试我的全局变量为什么它返回未定义
- html - 将图像从另一个项目的文件夹添加到 HTML?
- python - 如何将if中创建的变量发送到python中的elif?