Инициализация списка в kotlin

#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. В вопросе не указано, что он ищет список с фиксированным размером. Прокомментируйте, почему что-то не так, когда вы понижаете голоса людей…