티스토리 뷰
반응형
1. lateinit
코틀린에서 변수를 선언할 때, NullSafe한 타입으로 변수를 선언합니다. 이때, 제일 먼저 초기화를 해줘야 하는데, 초기화를 해주지 않는다면, 초기값이 없으므로 널값이 들어갈 수 있습니다.
아래의 예문을 봅니다.
//널값으로 선언 시 나중에 계속 ?를 사용하여 널값을 제거해야 하는 불편함.
var number: Int? = null
//latenit 선언으로 나중에 초기값을 정함.
lateinit var lateinitNumber: Int
//전역변수로서 lateinit의 초기값 선언.
lateinitNumber = 3
//실제 사용시 ?를 붙임.
number?.add()
//이미 초기화되어 그럴 필요가 없음.
lateninitNumber.add()
반응형
위처럼 변경이 불가한 var로 number를 널값으로 선언한 경우입니다.
lateinit은 non-Null한 타입만 선언이 가능하므로, 지역 변수에서는 사용이 불가하고, 전역 변수로서만 선언이 가능합니다. 따라서 미리 초기값을 넣지 못하는 상황이 발생할 때, lateinit을 선언하여 초기값을 반드시 세팅하도록 합니다. 이후에 lateinit을 사용 시에는 NullSafe하게 사용이 가능합니다.
물론, 초기값을 선언하지 않으며, 에러가 발생하므로 lateinit을 사용 시에는 반드시 초기값을 선언해야 합니다.
2. lazy init
lazy init은 나중에 초기화를 하겠다는 의미로, 지금 당장 이 많은 코드를 전부 초기화하기 보다는, 실제로 사용 시에 초기화를 해주겠다는 의미입니다.
바로 예문을 확인합니다.
val number: Int by lazy {
3
}
//사용 시에 3이 할당됨.
number.add()
위의 예문처럼, by lazy라는 키워드를 통해서 값을 넣어 줍니다. 사용하기 전까지는 값이 할당되지 않으나, 실제로 사용 시에는 3이 할당됩니다. 안드로이드에서는 뷰의 속성을 lazy init으로 넣은 후 나중에 사용하는 경우도 있습니다.
반응형
'Kotlin' 카테고리의 다른 글
랜덤 함수 Random( ) (0) | 2021.07.28 |
---|---|
Null Safety (0) | 2021.07.09 |
람다 표현식 Lamda Expression (0) | 2021.07.09 |
데이터 클래스 Data Class (0) | 2021.07.08 |
범위 함수 Scope Function (Apply, Also, Let, With, Run) (0) | 2021.07.08 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 메소드 오버라이딩
- 2019년 사건사고
- 애드뷰
- 탭레이아웃
- 안드로이드 스튜디오 에러
- view binding
- 안드로이드 프로젝트
- 자바스크립트 배열
- 안드로이드 앱 만들기
- 2021년 사건사고
- 안드로이드 어댑터
- 2007년 사건사고
- android adapter
- addView
- lazy init
- ToDo List 앱 만들기
- Bmi Calculator
- findViewById
- 선형 레이아웃
- 인텐트
- 대한민국 미제사건
- 뷰 바인딩
- bmi 계산기 만들기
- 상대적 레이아웃
- 미제사건
- RecyclerView
- notifyDataSetChanged
- tabLayout
- 리사이클러뷰
- 리스트뷰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함