我正在尝试像这样在Kotlin中初始化IntArray:

intArrayOf(1..9)

但是我得到一个TypeError,它是Int所必需的,但是我正在提供IntRange。有没有办法用范围初始化数组,还是我必须显式写出每个值?

最佳答案

使用内置函数,这是从IntArray进入IntRange的方法:

val array: IntArray = (1..9).toList().toIntArray()

这有点浪费,因为它首先构造了一个列表,将所有元素放入其中,然后构造了一个数组。要直接执行此操作,您可以使用自己的扩展程序,例如...
fun IntRange.toIntArray(): IntArray {
    if (last < first)
        return IntArray(0)

    val result = IntArray(last - first + 1)
    var index = 0
    for (element in this)
        result[index++] = element
    return result
}

这将为您提供以下语法:
val array: IntArray = (1..9).toIntArray()

10-06 03:24