我在 Kotlin 中有以下课程:
class Example {
val name: String
val lazyVar: String by lazy {
name + " something else"
}
init {
name = "StackOverflow"
}
}
Run Code Online (Sandbox Code Playgroud)
当我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"
}
}
Run Code Online (Sandbox Code Playgroud)
这种技术有效,但有没有办法保持内联惰性块的兼容性而不是依赖外部函数?
尝试
class Example {
val name: String
init {
name = "StackOverflow"
}
val lazyVar: String by lazy {
name + " something else"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |