我有一组单元格
数据类 Cell(val i: Int, val j: Int)
我在我的类(class)中像这样初始化
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/