이번에 수준별 반 과제를 진행하게 되면서 lateinit을 접하게 되었다
lateinit을 검색했더니 다 by lazy와 함께 설명이 되어있길래 보니까 비슷한듯 다르게 쓰이는 애들이였다
[공통점]
초기화를 나중에 할 때 사용한다
[차이점]
- lateinit
var로 선언하며 언제든 값을 수정할 수 있다
초기화는 선언이후 언제든 할 수 있다
코드 앞에 붙여서 쓴다
- by lazy
val로 선언하며 값을 변경할 수 없다
변수를 호출 할 때 한번만 가능하다
코드 뒤에 붙여쓴다
여기서 그럼 초기화를 나중에 한다라는것은 뭘까? 의문이 들었다
코틀린은 변수를 선언함과 동시에 초기화를 진행해줘야한다
하지만 일단 선언은 하는데 그 내용물을 당장 넣을 수 없는 상황이 생길때가 있다
그럴때는 null로 초기화 하는 것이 가능하지만 그렇게 되면 null값을 지양하는 코틀린 언어의 근본을 무시하는거나 다름없다
그래서 이때 lateinit 또는 by lazy를 사용한다
예시코드를 봤을 때
fun main() {
lateinit var name: String
var return: String by lazy {
"어쩌고 ${name} 저쩌고"
}
//name값을 내놓는 코드들 진행
name = "이름"
println(return)
}
지금 당장 name값을 알 수 없지면 변수를 써야하는 상황이라 lateinit을 활용해서 선언한다
그렇게 선언한 변수 name을 써야하는 상황에 by lazy를 사용하고 이후 name값이 나오게 된다
Kotlin Docs Scope functions / 범위 기능 1 (0) | 2024.03.29 |
---|---|
Kotlin Docs Extensions / 확장 프로그램 1 (0) | 2024.03.28 |
코딩 컨벤션이란 (0) | 2024.03.05 |
코틀린 기본 문법 / 컬렉션 (0) | 2024.02.26 |
코틀린 기본 문법 / 배열 (0) | 2024.02.23 |