Design-loving front-end engineer
Ryong
Design-loving front-end engineer
전체 방문자
오늘
어제
    • Framework
    • React
      • Concept
      • Library
      • Hook
      • Component
      • Test
    • NodeJS
    • Android
      • Concept
      • Code
      • Sunflower
      • Etc
    • Flutter
      • Concept
      • Package
    • Web
    • Web
    • CSS
    • Language
    • JavaScript
    • TypeScript
    • Kotlin
    • Dart
    • Algorithm
    • Data Structure
    • Programmers
    • Management
    • Git
    • Editor
    • VSCode
    • Knowledge
    • Voice
Design-loving front-end engineer

Ryong

Kotlin

[Android] [Kotlin] Null Safety

2021. 8. 30. 17:28

?  (Nullable)

✔  기본 변수는 모두 null이 입력되지 않음

✔  null 값을 입력하기 위해서는 변수를 선언할 때 뒤에 ?를 입력

 

[ 변수에 null 허용 설정하기 ]

var nullable: String?
nullable = null

var notNullable: String
notNullable = null  // Error

[ 함수 파라미터에 null 허용 설정하기 ]

fun nullParameter(str: String?) {
    if (str != null) {
        var length2 = str.length
    }
}

◽  파라미터 str에 null이 허용되었기 때문에 함수 내부에서 null 체크를 하기 전에는 str를 사용할 수 없음

 

[ 함수의 리턴 타입에 null 허용 설정하기 ]

fun nullReturn(): String? {
    return null
}

 

?.  Safe Call : 안전하게 호출하기

✔  null 체크를 간결하게

✔  Nullable인 변수 다음에 ?.을 사용하면 해당 변수가 null인 경우 ?. 다음의 메서드나 프로퍼티를 호출하지 않음

fun testSafeCall(str: String?): Int? {
    // str이 null이면 length를 체크하지 않고 null을 반환
    var resultNull: Int? = str?.length
    return resultNull;
}

 

?:  Elvis Operator : Null 값 대체하기

✔  원본 변수가 null일 때 넘겨줄 기본값 설정

fun testElvis(str: String?): Int {
    // length 오른쪽에 ?:을 사용하면 null일 경우 ?: 오른쪽 값이 반환
    var resultNonNull: Int = str?.length?:0
    return resultNonNull;
}

 

'Kotlin' 카테고리의 다른 글

[Android] [Kotlin] 스코프 함수  (0) 2021.08.30
[Android] [Kotlin] 지연 초기화  (0) 2021.08.30
[Android] [Kotlin] 설계 도구  (0) 2021.08.30
[Android] [Kotlin] 클래스  (0) 2021.08.30
[Android] [Kotlin] 함수  (0) 2021.08.30
    'Kotlin' 카테고리의 다른 글
    • [Android] [Kotlin] 스코프 함수
    • [Android] [Kotlin] 지연 초기화
    • [Android] [Kotlin] 설계 도구
    • [Android] [Kotlin] 클래스
    Design-loving front-end engineer
    Design-loving front-end engineer
    디자인에 관심이 많은 모바일 앱 엔지니어 Ryong입니다.

    티스토리툴바