안전 호출 연산자
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을 반환합니다.
챌린지
쉬움다음 nullable 변수가 주어졌습니다:
val message: String? = "Kotlin"safe call 연산자를 사용하여 다음을 수행하세요:
message의 길이를 가져와 출력하세요message를 대문자로 변환하고 결과를 출력하세요
그런 다음 또 다른 nullable 변수를 만드세요:
val empty: String? = nullsafe call 연산자를 사용하여 empty의 길이를 가져와 출력하세요.
각 결과는 별도의 줄에 출력되어야 합니다. 기억하세요: safe call 연산자는 값이
null일 때null을 반환합니다.
직접 해보기
fun main() {
val message: String? = "Kotlin"
// TODO: 안전 호출 연산자를 사용하여 message의 길이를 가져와 출력하세요
// TODO: 안전 호출 연산자를 사용하여 message를 대문자로 변환하고 출력하세요
val empty: String? = null
// TODO: 안전 호출 연산자를 사용하여 empty의 길이를 가져와 출력하세요
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: Kotlin 플레이그라운드