Как получить значение IntRange из списка <Int>в Kotlin? - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь преобразовать List в IntRange, но я понятия не имею, как это сделать. Не могли бы вы помочь мне?

val list: List<Int> = (1, 2, 3, 4, 5).toList()
val rangeFromTheList: IntRange = ??? // 1..5

Ответы [ 3 ]

0 голосов
/ 02 марта 2020

Или, если это всегда в порядке возрастания, просто

val list = listOf(1, 2, 3, 3, 5)
val rangeFromTheList: IntRange = list.first()..list.last() // 1..5
0 голосов
/ 02 марта 2020

Вы можете сделать:

fun List<Int>.asRange(): IntRange {
    val range = first()..last()
    if (range.toList() != this) {
        throw IllegalStateException("list is not continuous.")
    }
    return range
}

Вызывается так:

listOf(1, 2, 3, 4, 5).asRange() //OK
listOf(1, 2, 2, 4, 5).asRange() //NOK
listOf(1, 1).asRange() //NOK
0 голосов
/ 02 марта 2020

Вы можете получить минимальное и максимальное значения из списка и создать диапазон из этого:

val list = listOf(1, 2, 3, 3, 5)

val min = list.min() ?: 0
val max = list.max() ?: 0
val rangeFromTheList = min..max
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...