Как инициализировать Kotlin IntArray из IntRange? - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь инициализировать IntArray в Kotlin следующим образом:

intArrayOf(1..9)

Но я получаю TypeError, что Int требуется, но я предоставляю IntRange,Есть ли способ инициализировать массив с диапазоном, или я должен явно записывать каждое значение?

1 Ответ

5 голосов
/ 17 марта 2019

Используя встроенные функции, вы можете получить 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...