#kotlin
#kotlin
Вопрос:
Я пытаюсь инициализировать список как часть аргумента конструктора. Но я не понимаю, чего он от меня хочет
distortion = List(
size = 10,
init = 0
)
Список имеет тип room entity
var distortion: List<DistortionCacheEntity>? = null
Часть инициализации подчеркнута красным. Я не знаю, что туда вставить или как это написать. Может кто-нибудь помочь.
Ответ №1:
Функция, которую вы пытаетесь вызвать, выглядит следующим образом:
public inline fun <T> List(size: Int, init: (index: Int) -> T): List<T>
Итак init
, здесь не целое число, а скорее функция. Вызовите вот так:
distortion = List(size = 10) { index : Int ->
//Create object that the list needs to hold
}
Комментарии:
1. index: Int, что входит в эту часть Int? Могу ли я указать индекс размера списка 10?
2. Вам нужно будет создать там объект. В вашем случае типа
DistortionCacheEntity
. Эта часть будет вызвана 10 раз (т.Е. Размер вашего списка) для инициализации 10 объектов в списке. Индекс доступен, так что вы можете использовать его для создания объектов с различными значениями полей в зависимости от индекса.
Ответ №2:
var distortion: List<DistortionCacheEntity>? = null
distortion = List(10) { index -> DistortionCacheEntity()}
Комментарии:
1. Извините, я должен был уточнить, что список имеет тип room entity, var distortion: List<DistortionCacheEntity> ? = null
2. @AndroidDev123 Я обновил ответ — это должно сработать, но я не знаю, какова на самом деле ваша цель.
3. Список имеет размер 10, могу ли я указать индекс из 10, к которому применяются данные.
Ответ №3:
Самый простой способ инициализации списка — это библиотечная функция kotlin listOf(...)
Например,
listOf(1, 2, 3) // [1, 2, 3]
Комментарии:
1. нет причин для того, чтобы это было отклонено, это идиоматический способ инициализации списка в Kotlin. В вопросе не указано, что он ищет список с фиксированным размером. Прокомментируйте, почему что-то не так, когда вы понижаете голоса людей…