'Var' 必须初始化 Kotlin
'Var' must be initialized Kotlin
你们中的一些人可以帮我解决这个小问题吗?我对 Kotlin 和 Android 开发还很陌生!我不明白为什么这段代码 returns 我会出现以下错误:
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
怎么了?
谢谢大家!
在调用musicList
的getter前需要实例化:
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"
}
之后你还会有另外两个错误:
- 因为
List
是不可变的,所以你不能使用运算符 []
来赋值
要解决,可以用MutableList
代替List
。
class Catalog {
val musicList = mutableListOf<Music>()
}
- 您在索引 0 处没有项目,因此您会遇到越界异常。
要解决它,您可以添加您的元素:
fun main(args: Array<String>) {
var test = Catalog()
test.musicList += Music("1")
}
在 Kotlin 中,您可以通过两种方式初始化变量。
- 使用默认值初始化,例如... var temp:String = ""
- 使用 lateinit 关键字进行初始化(意味着您稍后会进行初始化),例如... lateinit var temp:String
在你的情况下你没有使用 lateinit 所以,你需要用默认值初始化你的变量
var test = Catalog()
或者如果你想初始化为 null
var test:Catalog? = null
你们中的一些人可以帮我解决这个小问题吗?我对 Kotlin 和 Android 开发还很陌生!我不明白为什么这段代码 returns 我会出现以下错误:
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
怎么了? 谢谢大家!
在调用musicList
的getter前需要实例化:
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"
}
之后你还会有另外两个错误:
- 因为
List
是不可变的,所以你不能使用运算符[]
来赋值
要解决,可以用MutableList
代替List
。
class Catalog {
val musicList = mutableListOf<Music>()
}
- 您在索引 0 处没有项目,因此您会遇到越界异常。 要解决它,您可以添加您的元素:
fun main(args: Array<String>) {
var test = Catalog()
test.musicList += Music("1")
}
在 Kotlin 中,您可以通过两种方式初始化变量。
- 使用默认值初始化,例如... var temp:String = ""
- 使用 lateinit 关键字进行初始化(意味着您稍后会进行初始化),例如... lateinit var temp:String
在你的情况下你没有使用 lateinit 所以,你需要用默认值初始化你的变量
var test = Catalog()
或者如果你想初始化为 null
var test:Catalog? = null