Kotlin - Массив объекта (не ноль) - PullRequest
1 голос
/ 14 февраля 2020

Я кодирую в kotlin, и у меня есть проблема с массивами

Я бы сделал функцию, которая возвращает массив автомобилей (например), но этот массив строится на основе данных из file

Пример:

fun buildAllCar(data:string) : Array<Car> {
    val array = arrayOfNulls<Location>(5) //In the real code, the size is retrieved by an other item

    for(i in array.indices){
        array[i] = buildACarByData(data); //Just so you could see a sample usage
    }

    return array.requireNoNulls()
}

Без requireNoNulls () тип возвращаемого объекта: Array of Car? Использовать этот метод единственный способ получить массив автомобилей или есть другой способ?

спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Вы можете инициализировать массив в Kotlin, используя функцию сопоставления, например, так:

val array = Array(size, mapper function)

Таким образом, для создания массива ненулевых автомобилей

fun buildAllCar(data: String): Array<Car> = Array(5) { buildACarByData(data) }
0 голосов
/ 14 февраля 2020

Измените код и измените тип возвращаемого значения Array, потому что, когда вы применяете тип возвращаемого значения, Kotlin проверяйте nullablity на "?" определить с безопасным вызовом и вернуть список, если объекты списка массивов равны нулю.

fun buildAllCar(data:string) : Array<Car?> {
    val array = arrayOfNulls<Location>(5) //In the real code, the size is retrieved by an other item

    for(i in array.indices){
        array[i] = buildACarByData(data); //Just so you could see a sample usage
    }

    return array
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...