룬아님의 취중코딩

Kotlin Bootcamp for Programmers 3. nullability 본문

개발/Kotlin

Kotlin Bootcamp for Programmers 3. nullability

룬아님 2019. 9. 27. 16:42

널 (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 코드를 처리 할 때 더블 뱅이 필요합니다.

 

반응형
Comments