Kotlin惰性属性取决于init中初始化的另一个属性
我在Kotlin有以下课程:
class Example { val name: String val lazyVar: String by lazy { name + " something else" } init { name = "StackOverflow" } }
当我在lazyVar
的lazy初始化块中使用name
时(即使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" } }
这种技术的工作原理,但有没有办法保持内联懒惰块,而不是依靠外部函数的紧凑?
尝试
class Example { val name: String init { name = "StackOverflow" } val lazyVar: String by lazy { name + " something else" } }