Menu
Coddy logo textTech

Not Null 단언

Coddy Kotlin 여정의 기초 섹션에 포함된 레슨. 93개 중 17번째.

안전 호출 연산자와 Elvis 연산자는 null을 우아하게 처리하지만, 때로는 코드의 특정 지점에서 nullable 값이 null이 아니라고 확신할 수 있습니다. null 아님 단언 연산자 !!를 사용하면 Kotlin에 “이 값은 null이 아니라고 보장합니다.”라고 알릴 수 있습니다.

fun main() {
    val name: String? = "Alice"
    val length = name!!.length  // String?를 String으로 변환합니다
    println(length)  // 출력: 5
}

!! 연산자는 null 허용 타입을 null을 허용하지 않는 타입으로 변환합니다. 하지만 값이 실제로 null이면 프로그램이 NullPointerException과 함께 충돌합니다:

fun main() {
    val name: String? = null
    val length = name!!.length  // 여기서 충돌합니다!
}

사용 시점: 값이 null이 될 수 없음을 보장하는 로직이 있지만 컴파일러가 이를 확인할 수 없을 때만 !!을 사용하세요. 대부분의 경우 안전 호출 ?. 또는 Elvis 연산자 ?:를 대신 사용하세요. null이 아님을 단언하는 기능은 첫 번째 선택이 아니라 최후의 수단이어야 합니다.

challenge icon

챌린지

쉬움

text 매개변수를 받아 대문자 버전의 길이를 반환하는 함수 getUppercaseLength를 작성하세요.

이 함수는 null이 아닌 문자열 값을 받지만, 매개변수 타입은 nullable입니다(String?). not-null 단언 연산자 !!를 사용하여 이를 nullable이 아닌 타입으로 변환한 다음, uppercase() 메서드를 연결하고 length를 가져오세요.

매개변수:

  • text (String?): 값이 포함되어 있음이 보장되는 nullable 문자열

반환값: 텍스트의 대문자 버전의 길이(Int)

참고: 이 챌린지에서 입력값은 항상 유효한 문자열이며, 절대 null이 아닙니다. 이는 값이 존재한다는 것을 알고 있지만 컴파일러가 이를 확인할 수 없는 상황을 시뮬레이션합니다.

직접 해보기

fun getUppercaseLength(text: String?): Int {
    // 여기에 코드를 작성하세요
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: Kotlin 플레이그라운드