lateinitVar无法解析使用来自Kotlin 1.2.10的isInitialized

lig*_*igi 0 android kotlin kotlin-lateinit

我想使用这个功能

在示例中最简单的事情对我不起作用:

lateinit val foo = 1
val bar = foo::lateinitVar.isInitialized()
Run Code Online (Sandbox Code Playgroud)

但我得到了

unresolved reference lateinitVar
Run Code Online (Sandbox Code Playgroud)

我在Android-Studio(也安装了Kotlin 1.2.10插件)中通过gradle使用Kotlin 1.2.10

s1m*_*nw1 15

lateinitVar代码中没有名称变量,因此错误.再看一下这个例子:

this::lateinitVar.isInitialized
Run Code Online (Sandbox Code Playgroud)

lateinitVar定义了一个变量this,调用该函数.示例中的代码段可以展开(列表开头的小加号),如下所示:

class Foo {
    lateinit var lateinitVar: String

    fun initializationLogic() {
        println("isInitialized before assignment: " + this::lateinitVar.isInitialized)
        lateinitVar = "value"
        println("isInitialized after assignment: " + this::lateinitVar.isInitialized)    

    }
}
Run Code Online (Sandbox Code Playgroud)

这可能会更清楚.

另外,请注意lateinit不能应用val但仅适用var.