kotlin 中的 init 方法取决于变量的顺序和 init 方法声明

a_l*_*ody 4 android kotlin

在 kotlin 中,对于任何具有init方法的类(我在 ViewModel 中找到了这个示例),为什么以下内容有效:

val variable1 = "nothing"

fun example1() {
    variable1
    variable2
}

val variable2 = "nothing"
Run Code Online (Sandbox Code Playgroud)

我声明变量和方法的顺序没有区别,我仍然可以variable2在方法内部访问,但是,

val variable1 = "nothing"

val variable2 = "nothing"

init {
    variable1
    variable2
    variable3
}

val variable3 = "an issue"
Run Code Online (Sandbox Code Playgroud)

给出一个错误说variable3必须初始化?看到这张图片,我知道没有使用 example1(),但如果我在某处使用它并没有什么区别在此处输入图片说明

a_l*_*ody 5

感谢 CommonsWare 指出。

初始化块不是构造函数,它们只是用于初始化值,你甚至可以有多个初始化块。但是,初始化块不是函数,因此它取决于声明和使用变量的顺序