Kotlin惰性属性取决于init中初始化的另一个属性

我在Kotlin有以下课程:

class Example { val name: String val lazyVar: String by lazy { name + " something else" } init { name = "StackOverflow" } } 

当我在lazyVar的lazy初始化块中使用name时(即使nameinit块中被初始化),我得到以下错误:

变量'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" } }