如何简化可变列表中可变列表的分配

时间:2018-06-24 16:13:47

标签: list kotlin

因此,我正在Kotlin中使用类进行基于文本的游戏。我需要知道除了下面的代码还有其他方法。例如,我希望它执行

之类的操作
val game:MutableList<MutableList<Char>> = mutableListOf(mutableListOf(' '*6)*7)

游戏:

private val game:MutableList<MutableList<Char>> = mutableListOf(
            mutableListOf(' ', ' ', ' ', ' ', ' ', ' '),
            mutableListOf(' ', ' ', ' ', ' ', ' ', ' '),
            mutableListOf(' ', ' ', ' ', ' ', ' ', ' '),
            mutableListOf(' ', ' ', ' ', ' ', ' ', ' '),
            mutableListOf(' ', ' ', ' ', ' ', ' ', ' '),
            mutableListOf(' ', ' ', ' ', ' ', ' ', ' '),
            mutableListOf(' ', ' ', ' ', ' ', ' ', ' ')
    )

2 个答案:

答案 0 :(得分:6)

MutableList(7) { MutableList(6) { ' ' } }

使用inline fun <T> MutableList(size: Int, init: (index: Int) -> T): MutableList<T>。其他集合具有类似的工厂功能。

答案 1 :(得分:1)

generateSequence 可用于使用函数创建元素序列。 take()将序列限制为多个元素,并且 toMutableList()将其转换为列表。

private val game: MutableList<MutableList<Char>> = 
  generateSequence { generateSequence { ' ' }.take(6).toMutableList() }
    .take(7).toMutableList()