Kotlin中的递延任务是什么?

时间:2018-08-03 13:28:58

标签: kotlin variable-assignment

在Kotlin文档中,提到了有关延迟分配的信息

val a: Int = 1  // immediate assignment  
val b = 2   // `Int` type is inferred  
val c: Int  // Type required when no initializer is provided  
c = 3       // **deferred assignment**

延期分配是什么意思?

3 个答案:

答案 0 :(得分:4)

这只是意味着该变量不是在其声明中初始化的,而是在以后的时刻初始化的。

答案 1 :(得分:1)

如文档中所述,在下一行初始化val c: Int之前,先声明c

这意味着您可以在声明函数后的某些行中初始化一个不可为空的val

例如这样的例子:

class Hichhiker {
    fun foo() {
        val firstName: String
        val lastName: String
        val age: Int
        firstName = "Arthur"
        lastName = "Dent"
        age = 40
    }
}

代替此:

class Hichhiker {
    fun foo() {
        val firstName = "Arthur"
        val lastName = "Dent"
        val age = 40
    }
}

因此,即使分配被某些代码行推迟了,编译器仍可以识别不可为空的val的初始化。

有关在类级别上类似且更常用的内容,请参见lateinitdelegates like lazy()

答案 2 :(得分:0)

这只是意味着变量已经被初始化并且赋值给它发生在初始化下面的代码行中。意味着赋值被推迟到以后。