如何从IntRange初始化Kotlin IntArray?

时间:2019-03-17 18:30:47

标签: kotlin

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

intArrayOf(1..9)

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

1 个答案:

答案 0 :(得分:5)

使用内置函数,这就是从IntArrayIntRange的方式:

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()