상세 컨텐츠

본문 제목

코틀린 lateinit과 by lazy에 대해서

이론공부/코틀린 문법

by 뽀사장 2024. 3. 22. 17:20

본문

728x90
반응형

 

이번에 수준별 반 과제를 진행하게 되면서 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값이 나오게 된다

728x90
반응형

관련글 더보기