gpt4 book ai didi

kotlin - 在Kotlin中更惯用的方式来初始化集合吗?

转载 作者:行者123 更新时间:2023-12-02 12:47:13 26 4
gpt4 key购买 nike

我有一组细胞data class Cell(val i: Int, val j: Int)我在类这样初始化

protected val board = mutableSetOf<Cell>()
init {
for (i in 1..width) {
for (j in 1..width) {
board += Cell(i, j)
}
}
}

有没有更惯用的(功能性的)方式初始化集合?
理想情况下,我希望该集合是不可变的,因为在初始化之后,永远不要更改它。

最佳答案

您可以定义一个扩展程序,该扩展程序需要一个转换器来获取作为一对整数的组合,然后将其映射到Cell。例如:

inline fun <R> IntRange.combine(block: (Int, Int) -> R): Set<R> {
return flatMap { x -> map { y -> block(x, y) } }.toSet()
}

然后,您可以使用以下命令进行初始化:
protected val board = (1..width).combine { x, y -> Cell(x, y) }

或者简单地:
protected val board = (1..width).flatMap { i -> (1..width).map { j -> Cell(i, j) } }

我认为前者更具可读性。

关于kotlin - 在Kotlin中更惯用的方式来初始化集合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55800506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com