我在Kotlin有以下课程:
class Example {
val name: String
val lazyVar: String by lazy {
name + " something else"
}
init {
name = "StackOverflow"
}
}
我在name
的延迟初始化块中使用lazyVar
时出现以下错误(即使在name
块中初始化init
):
必须初始化变量'name'
解决方案是在另一种方法中初始化变量:
class Example {
val name: String
val lazyVar: String by lazy {
initLazyVar()
}
init {
name = "StackOverflow"
}
private fun initLazyVar(): String {
return name + " something else"
}
}
这种方法有效,但是有没有办法保持内联惰性块的强度而不是依赖外部函数?
答案 0 :(得分:4)
尝试
class Example {
val name: String
init {
name = "StackOverflow"
}
val lazyVar: String by lazy {
name + " something else"
}
}