우리가 어떤 변수를 사용해야할 때, 그 변수를 바로 정의하기 어려울 때가 있습니다.
var apple: Int?= null
변수를 선언과 동시에 null로 초기화를 하고 나중에 필요할 때 초기화해주면 쉽게 정의할 수 있습니다.
하지만 굳이 위험하게 null로 초기화하는 것은 좋아보이진 않습니다.
이럴 때 우리는 늦은 초기화를 사용하면 됩니다.😋
늦은 초기화라고 하는 말은, 말 그대로 객체 초기화를 늦게하는 것 입니다!
fun main() {
lateinit var fruit: String
...
fruit = "apple"
...
fruit = "orange"
}
lateinit
을 사용하여 fruit
변수를 선언하고, 이후에 어떠한 동작 이후에 fruit를 apple
로 초기화 해주었습니다.
var
로 선언되어있기 때문에 언제든지 값을 변경할 수 있습니다.
만약 lateinit
을 안써준다면 Android Studio가 친절하게 Property must be initialized or be abstract
라는 에러메시지를 띄워줍니다! 😂 꼭 초기화합시다!
fun main() {
val fruit: String by lazy {
"apple"
}
// fruit = "orange"
}
by lazy
는 변수를 선언과 동시에 초기화하는 키워드입니다.
그리고 호출 시 변수를 초기화 해줄 지에 대하여 정의할 수 있는 구문이다.
선언부 보면, fruit
변수가 val
로 선언이 되어있어 단 한 번의 늦은 초기화가 이루어지고 이후에는 값이 불변함을 보장합니다 🤐