늦은 변수 할당 lateinit 와 lazy > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

Android | 늦은 변수 할당 lateinit 와 lazy

본문

1. lateinit

 

선언만 하고 나중에 할당할때는 lateinit 키워드를 사용한다.

기본자료형에서는 사용할 수 없다.

 

::변수.isInitialized

  변수에 값이 할당되었는지 여부

 

[code]

fun main() {

val a = LateInitSample()

    

    println(a.getLateInitText())

    

    a.text = "안녕하세요"

    

    println(a.getLateInitText())

}


class LateInitSample {

    lateinit var text: String

    

    fun getLateInitText(): String {

        if (::text.isInitialized) {

            return text

        } else {

            return "기본값"

        }

    }

}

[/code]

 

결과

[code]

기본값

안녕하세요

[/code]

 

2. lazy

lamda 함수로 초기화 구문만 정의해 놓고 실제 초기화는 해당 변수를 사용할때 자동 적용된다.

 

[code]

fun main() {

val number: Int by lazy {

        println("초기화를 합니다")

        7 // 마지막 줄이 리턴된다

    }

    

    println("코드를 실행합니다")

    println(number) // 처음 사용할때 초기화 된다

    println(number)

}

[/code]

 

결과

[code]

코드를 실행합니다

초기화를 합니다

7

7

[/code]

댓글 0개

등록된 댓글이 없습니다.

Menu