相关疑难解决方法(0)

Kotlin 类中的初始化块位置

我最近遇到了一种情况,即使我使用 init 块为构造函数分配了一个值,我的标准变量的值也会被默认值替换。

我尝试的是:

class Example(function: Example.() -> Unit) {

    init {
        function()
    }

    var name = "default name"

}


// assigning it like this:
val example = Example { name = "new name" }

// print value
print(example.name)  // prints "default name"
Run Code Online (Sandbox Code Playgroud)

经过一番挣扎,我发现 init 块的位置很重要。如果我将 init 块放在类的最后一个,它首先使用默认名称初始化名称,然后调用 function() 将值替换为“新名称”。

如果我把它放在第一位,它没有找到名称,并且在初始化属性时将其替换为“默认名称”。

这对我来说很奇怪。谁能解释为什么会这样?

constructor initialization class init kotlin

4
推荐指数
1
解决办法
4135
查看次数

标签 统计

class ×1

constructor ×1

init ×1

initialization ×1

kotlin ×1