본문 바로가기
카테고리 없음

by lazy 와 get()의 차이점

by liz_devel 2021. 12. 9.

차이점은 함수 본문( accountDao.readAccount())이 실행되는 횟수 입니다.

lazy대리인 람다 하나의 타임이 처음으로 액세스를 실행하고, 결과를 기억한다. 다시 호출되면 해당 캐시된 결과가 반환됩니다.

반면에 getter( get())를 정의하면 매번 함수 본문이 실행되어 매번 새로운 결과를 반환합니다.

예를 들어 Foogetter와 lazy 값을 모두 사용하여 호출된 클래스가 있다고 가정해 보겠습니다 .

 

class Foo {
    val getterVal: String
        get() = System.nanoTime().toString()

    val lazyVal: String by lazy { System.nanoTime().toString() }
}

그런 다음 사용하십시오.

fun main() {
    with(Foo()) {
        repeat(2) {
            println("Getter: $getterVal")
            println("Lazy:   $lazyVal")
        }
    }
}

나를 위해 이것은 다음을 인쇄합니다.

Getter: 1288398235509938
Lazy:   1288398235835179
Getter: 1288398235900254
Lazy:   1288398235835179

그리고 getter는 매번 새로 계산된 값을 반환하고, lazy 버전은 동일한 캐시된 값을 반환하는 것을 볼 수 있습니다.

 

 

출처: https://stackoverflow.com/questions/57378493/difference-between-get-and-by-lazy

반응형