Что такое отложенное задание в Котлине?
В документации 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 ответа
Это просто означает, что переменная инициализируется не в своем объявлении, а на более позднем этапе.
Как указано в документации 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
даже если назначение было отложено на несколько строк кода.
Что-то похожее на уровне класса и чаще используется, см. Lateinit и делегаты вроде lazy()
Это просто означает, что переменная была инициализирована, и присвоение ей значения происходит строками кода ниже инициализации. Это означает, что присвоение было отложено на потом.