Kotlin은 변수 선언시 초기화를 하지 않으면 컴파일이 되지 않는다.
하지만 경우에 따라 초기화를 늦게 해야하는 경우도 생긴다.
이렇게 변수를 늦게 초기화 해주기 위한 키워드가 'lateinit'이다
단, 기본 자료형에는 사용할 수 없다는 제한이 있다
초기와 되었는지는 ::a.isInitialized 값을 확인하면 초기화 되었는지 확인 할 수 있다.
class LateInitSample {
lateinit var text: String
fun getLateInitText(): String {
if (::text.isInitialized) {
return text
} else {
return "default"
}
}
}
fun main() {
var a = LateInitSample()
println(a.getLateInitText()) // detault 출력
a.text = "new Text"
println(a.getLateInitText()) // new Text 출력
}
변수를 사용하는 시점까지 초기화를 자동으로 늦춰주는 기능도 있다.
람다함수로 초기화됨으로 함수 안에 여러개의 구문이 들어 갈 수 있다.
fun main() {
val number : Int by lazy {
println("변수 초기화 동작")
7
}
println("코드를 시작합니다")
println(number)
println(number)
}