'Var' должен быть инициализирован Kotlin - PullRequest
0 голосов
/ 22 марта 2020

Некоторые из вас могут помочь мне с этой маленькой проблемой? Я очень новичок в разработке Kotlin и Android! Я не понимаю, почему этот фрагмент кода возвращает мне следующую ошибку:

class Catalog {
var musicList: List<Music> = ArrayList()
}

class Music{
    var id: String = ""
}

fun main(args: Array<String>) {  
    var test: Catalog
    test.musicList[0] = "1"  
}

ОШИБКА:

Variable 'test' must be initialized

Что не так? Спасибо всем!

Ответы [ 2 ]

2 голосов
/ 22 марта 2020

Вам необходимо создать его экземпляр перед вызовом метода получения musicList:

fun main(args: Array<String>) {  
    var test = Catalog()
    test.musicList[0] = "1"  
}

Кроме того, если вы не присваиваете значение test, вы можете объявить его как val:

fun main(args: Array<String>) {  
    val test = Catalog()
    test.musicList[0] = "1"  
}

После этого у вас появятся еще 2 ошибки:

  1. , поскольку List является неизменным, поэтому вы не можете использовать оператор [] для присвоения значения

Чтобы решить эту проблему, вы можете использовать MutableList вместо List.

class Catalog {
    val musicList = mutableListOf<Music>()
}
У вас нет элемента с индексом 0, поэтому вы получите исключение за пределами допустимого. Чтобы решить ее, вы можете добавить свой элемент:
fun main(args: Array<String>) {  
    var test = Catalog()
    test.musicList += Music("1")  
}
0 голосов
/ 22 марта 2020

в Kotlin вы можете инициировать переменную двумя способами.

  1. init со значением по умолчанию, например ... var temp: String = ""
  2. init с ключевым словом lateinit ( означает, что вы начнете позже) как ... lateinit var temp: String

в вашем случае вы не используете lateinit Итак, вам нужно инициализировать вашу переменную со значением по умолчанию

var test = Catalog()

или если вы хотите инициализировать как ноль

var test:Catalog? = null
...