Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

코틀린 lazy vs lazyinit: 코틀린의 변수 초기화 이해... 퍼옴

Billcorea 2024. 6. 27. 15:21
반응형

코틀린 lazy vs lazyinit: 코틀린의 변수 초기화 이해

게으름


• 코틀린은 코드 효율성과 가독성을 단순화하고 개선하기 위해 게으름과 늦게 시작하는 두 가지 속성 이니셔티브를 제공한다. Lazy는 불변 Val 속성에 사용되며 처음 사용할 때 속성을 초기화하여 더 나은 자원 관리와 향상된 시작 시간을 보장합니다.

• Lazy는 Kotlin Delegates를 사용하여 구현되며 이니셜라이저의 스레드 안전 버전을 사용합니다. 모든 get()에서 초기화를 확인하고 직관적인 속성 초기화를 위해 람다 함수를 사용한다.

• 반면에 Lateinit은 가변 var 속성에 사용되며 시간이 지남에 따라 속성이 변경될 수 있다. 시작 시 초기화되지 않으며 첫 번째 읽기 전에 명시적인 초기화가 필요하며 그렇지 않으면 충돌이 발생합니다.

• 게으른 초기화와 달리, 늦은 초기화는 프로그램의 어느 곳에서나 일어날 수 있으므로 병목 최적화에 적합합니다. 그러나 테스트 목적으로만 사용되는 isInitialized()를 사용하여 초기화를 위해 신중하게 사용해야 하며 절대 확인하지 않아야 합니다.

• 원시 유형의 경우 코틀린의 백킹 필드 생성으로 인해 레이트니잇을 직접 사용할 수 없다. 대신 Delegates.notNull<T>()를 대안으로 사용할 수 있으며, 이는 유사하게 작동하지만 대리인을 통해 원시 유형을 상자에 넣습니다.

https://medium.com/@michalankiersztajn/kotlin-lazy-vs-lateinit-explained-3574d5ec7d15

Kotlin Lazy vs Lateinit Explained

Properties are the core of every program. There are many smart ways to initialize them. Take a look at lazy and lateinit initializations:

medium.com

반응형