코틀린 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
'모바일 앱(안드로이드)' 카테고리의 다른 글
종합 가이드 멀티플랫폼 리소스 구성 ... 퍼옴 (0) | 2024.06.29 |
---|---|
안드로이드 스튜디오: 컬러, 아이콘, 구성품 프리뷰용 다시마 플러그인으로 개발자 경험 강화 . 퍼옴 (0) | 2024.06.28 |
제트팩 구성으로 견고한 MVI 아키텍처 구현 ... 퍼옴 (0) | 2024.06.26 |
안드로이드 개발자 블로그: 구글 I/O에서 안드로이드 개발자가 알아야 할 15가지 ... 퍼옴 (2) | 2024.06.25 |
Firebase 웹 앱에 대한 TOTP 다중 인증 활성화 ... 퍼옴 (1) | 2024.06.23 |