如何在Kotlin中初始化“内联”数组

vbkedwbf  于 2022-11-16  发布在  Kotlin
关注(0)|答案(2)|浏览(173)

我是Kotlin的一个新成员,我正在尝试编译一个非常简单的东西。我想用一行代码初始化一个列表数组。但是我总是不得不使用可变对象和插入到列表中。
这里我有什么 * 我不喜欢 *。它太复杂,很多行代码,数组不需要在现实中是可变的。它将永远是相同的大小和相同的元素数量。

val r0 = arrayListOf<Int>(1, 3, 5, 7)
val r1 = arrayListOf<Int>(10, 11, 16, 20)
val r2 = arrayListOf<Int>(23, 30, 34, 60)

val list: MutableList<ArrayList<Int>> = ArrayList()
list.add(r0)
list.add(r1)
list.add(r2)

可以,但我想要

val list2: List<ArrayList<Int>> = ArrayList(
    arrayListOf<Int>(1, 3, 5, 7),
    arrayListOf<Int>(10, 11, 16, 20),
    arrayListOf<Int>(23, 30, 34, 60)
)

但这不编译,不确定为什么。
谢谢你,谢谢你。

f0ofjuux

f0ofjuux1#

将您的原始文件(属于):

val list2: List<ArrayList<Int>> = ArrayList(
    arrayListOf<Int>(1, 3, 5, 7),
    arrayListOf<Int>(10, 11, 16, 20),
    arrayListOf<Int>(23, 30, 34, 60)
)

我将其修改为:Kotlin构造函数几乎总是遵循arrayListOf命名法,并且在=之后的第一行中有ArrayList

val list2: ArrayList<ArrayList<Int>> = arrayListOf(
    arrayListOf(1, 3, 5, 7),
    arrayListOf(10, 11, 16, 20),
    arrayListOf(23, 30, 34, 60)
)

这些类型不是每个内部列表都必须的,因为您已经在变量中声明了它们
使用此模式的构造函数的其他示例:
listOf, mutableListOf, intArrayOf, booleanArrayOf
一些不相似的构造函数:
arrayOfNulls, emptyArray, emptyList

6rqinv9w

6rqinv9w2#

这里有一个简单的方法:

val list2: List<List<Int>> = listOf(
    listOf(1, 3, 5, 7),
    listOf(10, 11, 16, 20),
    listOf(23, 30, 34, 60)
)

相关问题