변수의 늦은 초기화
lateinit
- lateinit var 변수명 : 타입명
- 늦은 초기화 기법.
- 변수의 첫 상태를 정의하기 어렵고, 나중에 정의할때 사용!!
- 나중에 어떻게 정의할지 상관 없음
- 초기화 이후 값이 계속 바뀔수 있을때
fun main() {
lateinit var text: String
val result1 = 30
text = "Result : $result1"
println(text)
val result2 = 50
text = "Result : ${result1 + result2}"
println(text)
}
- 무조건 var 과 함께 사용!
- 원시타입 (Int, Float, Double, Long, Short, Boolean, Byte, Char) 에는 사용불가
by lazy
- val 변수명 : 타입명 by lazy{ 값 }
- 늦은 초기화 기법.
- 해당 변수에 최초로 값을 요청할때 할당된다.
- 무조건 적으로 실행될때 ex) onCreate 내부에 실행될때 는 lazy를 사용하지 않는게 좋음