Menu
Coddy logo textTech

안전 호출 연산자

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

nullable 변수가 있으면 해당 변수에서 메서드를 직접 호출하거나 속성에 액세스할 수 없습니다. 값이 null일 수 있기 때문에 컴파일러가 이를 허용하지 않습니다. 안전 호출 연산자 ?.는 이 문제를 우아하게 해결합니다.

일반적인 점 .을 사용하는 대신, nullable 타입의 멤버에 안전하게 액세스하려면 ?.을 사용합니다:

fun main() {
    val name: String? = "Alice"
    val length = name?.length  // 5를 반환합니다
    println(length)
    
    val nullName: String? = null
    val nullLength = nullName?.length  // null을 반환합니다 (크래시 없음!)
    println(nullLength)
}

안전 호출 연산자는 속성이나 메서드에 접근하기 전에 값이 null인지 확인합니다. 값이 null이면 전체 표현식이 충돌하는 대신 null을 반환합니다. 값이 존재하면 일반 호출과 똑같이 작동합니다.

여러 개의 안전 호출을 함께 연결할 수도 있습니다:

fun main() {
    val text: String? = "Hello"
    val result = text?.uppercase()?.length
    println(result)  // 출력: 5
}

체인의 어느 부분이든 null이면 전체 표현식이 오류를 발생시키지 않고 안전하게 null을 반환합니다.

challenge icon

챌린지

쉬움

다음 nullable 변수가 주어졌습니다:

val message: String? = "Kotlin"

safe call 연산자를 사용하여 다음을 수행하세요:

  1. message의 길이를 가져와 출력하세요
  2. message를 대문자로 변환하고 결과를 출력하세요

그런 다음 또 다른 nullable 변수를 만드세요:

val empty: String? = null

safe call 연산자를 사용하여 empty의 길이를 가져와 출력하세요.

각 결과는 별도의 줄에 출력되어야 합니다. 기억하세요: safe call 연산자는 값이 null일 때 null을 반환합니다.

직접 해보기

fun main() {
    val message: String? = "Kotlin"
    
    // TODO: 안전 호출 연산자를 사용하여 message의 길이를 가져와 출력하세요
    
    // TODO: 안전 호출 연산자를 사용하여 message를 대문자로 변환하고 출력하세요
    
    val empty: String? = null
    
    // TODO: 안전 호출 연산자를 사용하여 empty의 길이를 가져와 출력하세요
}
quiz icon실력 점검

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

기초의 모든 레슨

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