일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 뷰변경 감지
- recyclerview
- 코틀린
- 안드로이드스튜디오
- 코딜리티
- 안드로이드13
- fragment
- 안드로이드개발레벨업교과서
- 안드로이드
- Fragment에서 Activity의 함수 사용하기
- 스와이프
- adapter
- viewholder
- 재사용
- 고차함수
- Error:Execution failed for task ':app:mergeDebugResources'
- 리사이클러뷰
- 구분선
- IntentTestRule
- Android
- LayoutManger
- ActivityTestRule
- 테마 아이콘
- high order function
- binding adapter
- searchview
- 생명주기
- Fragment 수동 추가
- ui test
- espresso
Archives
- Today
- Total
룬아님의 취중코딩
Kotlin Bootcamp for Programmers 3. nullability 본문
널 (null)과 관련된 프로그래밍 오류는 수많은 버그의 원인이었습니다. Kotlin은 nullable이 아닌 변수를 도입하여 버그를 줄입니다.
Step 1: Learn about nullability
기본적으로 변수는 null 일 수 없습니다.
Int를 선언하고 null을 할당하면
var rocks: Int = null
⇒ error: null can not be a value of a non-null type Int
유형 뒤에 물음표 연산자 (?)를 사용하여 변수가 null일 수 있음을 나타냅니다.
var marbles: Int? = null
List와 같은 복잡한 데이터 유형이있는 경우 :
- 목록의 요소가 null이되도록 허용 할 수 있습니다.
- 목록을 null로 허용 할 수 있지만 null이 아닌 경우 해당 요소는 null 일 수 없습니다.
- 목록 또는 요소를 모두 널로 허용 할 수 있습니다.
Step 2: Learn about the ? and ?: operators
?로 null을 테스트 할 수 있습니다. 연산자를 사용하면 많은 if / else 문을 작성하는 고통을 줄일 수 있습니다.
방법 1 (고전적인 방법) :
var fishFoodTreats = 6
if (fishFoodTreats != null) {
fishFoodTreats = fishFoodTreats.dec()
}
방법 2 (?를 사용하여 null을 체크하는 방법) :
var fishFoodTreats = 6
fishFoodTreats = fishFoodTreats?.dec()
방법 3 (?:을 사용하여 null을 체크하고 초기화하는 방법) :
fishFoodTreats = fishFoodTreats?.dec() ?: 0
"fishFoodTreats가 null이 아닌 경우이를 줄인 다음 사용하십시오. 그렇지 않으면? : 뒤에있는 값을 사용하십시오 (0)). fishFoodTreats가 null이면 평가가 중지되고 dec () 메서드가 호출되지 않습니다.
참고 :? : 연산자는 때때로 "Elvis 연산자"라고도합니다. Elvis Presley가 머리 스타일을 지정하는 방식과 같이 퐁파두르 헤어 스타일이있는 측면의 웃는 것과 같습니다.
참고 :? : 연산자는 때때로 "Elvis 연산자"라고도합니다. Elvis Presley가 머리 스타일을 지정하는 방식과 같이 퐁파두르 헤어 스타일이있는 측면의 웃는 것과 같습니다.
널 포인터에 대한 요점
NullPointerExceptions을 정말로 좋아한다면 Kotlin을 사용하여 유지할 수 있습니다. 널이 아닌 어설 션 연산자 (double-bang), 모든 값을 널이 아닌 유형으로 변환하고 값이 널인 경우 예외를 발생시킵니다.
val len = s!!.length // throws NullPointerException if s is null
참고 : 일반적으로 더블 뱅 연산자를 사용하는 것은 좋지 않습니다.
그렇기 때문에 언어 작성자가 느낌표 하나 대신 느낌표 두 개를 입력하게 된 것입니다.
그러나 때로는 레거시 Java 코드를 처리 할 때 더블 뱅이 필요합니다.
반응형
'개발 > Kotlin' 카테고리의 다른 글
Kotlin Bootcamp for Programmers 5. 왜 (거의) 모든 것들은 value를 가지고 있을까? (0) | 2019.10.04 |
---|---|
Kotlin Bootcamp for Programmers 4. arrays, lists, and loops (0) | 2019.09.30 |
Kotlin Bootcamp for Programmers 2. 조건부와 대소비교 (0) | 2019.09.27 |
Kotlin Bootcamp for Programmers 1. 코틀린의 이점 (0) | 2019.09.27 |
Kotlin let을 null check에 사용하지 마라 (0) | 2019.09.22 |
Comments