반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘
- 싱글톤
- 비동기 처리
- 초기화
- dart
- Kotlin
- 거리알고리즘
- 자바
- 플러터
- dfs
- linebreak
- Lazy
- 재귀
- Android
- 프로그래머스
- 코틀린
- Java
- Widget Tree
- 완전탐색
- 앱아이콘 변경
- 프리즈드
- IOS
- 자료구조
- zwj
- Singleton
- 플러터 동작
- 에러
- element tree
- flutter
- Render object tree
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
Kotlin - lazy 본문
반응형
Kotlin은 변수 초기화 지연을 도와주는 위한 유용한 기능이 존재하는데,
나에게 매우 잘 어울리는 키워드인 lazy 키워드다.
lazy초기화의 경우 read-only 변수, 즉 val 변수에만 사용할 수 있다.
우선 예제 코드를 보자 :
class JavarianActivity : AppCompatActivity(){
val sampleTextView: TextView by lazy { // Lazy init.
findViewById(R.id.tv_1) as TextView
}
fun updateTextView() {
sampleTextView.text = "Hi"
}
}
앞서 설명한 바와 같이, 코틀린에서의 모든 변수(property)는 초기화를 필수로한다.
일반적인 초기화라면 sampleTextView를 선언하는 동시에 무조건 초기화를 해줘야하겠지만,
lazy 초기화는 뜻 자체의 느낌을 잘 살려 초기화를 보류하고, 나중에 실제로 변수가 최초 사용되는 시점에 초기화해준다.
위 샘플 코드의 경우 게으른 sampleTextView를 사용하는 updateTextView()가 호출된 뒤, text를 입력하기 전에 초기화가 이루어진다.
여기서 또 주목해야할 건 lazy 앞에 붙은 by 라는 키워드인데 해당 키워드는 위임(delegation)을 의미한다.
즉, sampleTextView이 뒤늦게 초기화를 하는 건 변수 스스로가 아닌, 초기화 역할을 위임 받은 by 뒤에 명시한 lazy(함수)가 처리 해주는 것이다.
실제 변수가 사용될 때 초기화를 해주기 때문에 초기화 이후 사용 빈도가 적거나 나중에 사용되는 경우, 또는 의도치 않게 전혀 사용되지 않는 경우를 생각해본다면,, 보다 유~연~하게 효율적으로 메모리를 사용할 수 있다는 큰 장점이 있다.
(단점도 물론 있습니다.. 혹시 궁금하면 댓글로 부탁드립니다.)
반응형
'Android > Android.Kotlin' 카테고리의 다른 글
Kotlin - object & companion object (0) | 2023.04.14 |
---|---|
Kotlin - Null Safety (?, !!) (0) | 2021.12.14 |
Kotlin - 변수 초기화(Initialization) (0) | 2021.12.14 |
Comments