티스토리 뷰

먼저 읽어볼만한 글

코틀린 변수에 대한 null 체크하기

// val 변수는 최초 1번 값을 할당하면 재할당이 불가능하다.
val someText: String
someText = "foo"
someText = "bar" // [Error] Val cannot be reassigned

// var 변수는 값의 재할당이 가능하다.
var someText: String
someText = "foo"
someText = "bar"

// 모든 변수는 기본적으로 null이 허용되지 않는 non-null 타입이다.
val someText : String
someText = null // [Error] Null can not be a value of a non-null type String.Companion

// ? 오퍼레이터를 타입 뒤에 붙이면 null이 허용된다.
val someText : String?
someText = null

// ?: 엘비스 오퍼레이터는 좌변이 null일 경우에만 우변을 실행한다.
someText ?: return

// 1개 이상의 여러 문장을 실행할 때는 run{} 블록을 이용한다.
someText ?: run {
    println("foo")
    println("bar")
}

// 변수명 뒤에 ?를 붙이고 함수를 실행하면 null이 아닐 경우에만 함수를 실행한다.
someText?.run {
    println(this)
}

// null이 아닐 경우에만 함수를 실행하여 리턴 값을 변수에 할당한다. null일 경우 그대로 null을 할당한다.
val toUpperCase = someText?.toUpperCase()

// null일 경우 우변의 값을 할당한다.
val toUpperCase = someText?.toUpperCase() ?: "null"

// 변수의 값에 따라 조건에 해당하는 문장을 실행한다.
when (someText) {
    "foo" -> println("foo")
    "bar" -> println("bar")
    else -> println("else or null")
}

// 리스트를 사용하거나 정렬하거나 필터링할 수 있다.
val someList: List<String> = listOf("C", "B", "A")
val someListSorted = someList.sortedBy { it }
val someListFiltered = someList.filter { it > "B" }

println(someList) // [C, B, A]
println(someListSorted) // [A, B, C]
println(someListFiltered) // [C]
댓글
댓글쓰기 폼