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이 아님을 단언하는 기능은 첫 번째 선택이 아니라 최후의 수단이어야 합니다.
챌린지
쉬움text 매개변수를 받아 대문자 버전의 길이를 반환하는 함수 getUppercaseLength를 작성하세요.
이 함수는 null이 아닌 문자열 값을 받지만, 매개변수 타입은 nullable입니다(String?). not-null 단언 연산자 !!를 사용하여 이를 nullable이 아닌 타입으로 변환한 다음, uppercase() 메서드를 연결하고 length를 가져오세요.
매개변수:
text(String?): 값이 포함되어 있음이 보장되는 nullable 문자열
반환값: 텍스트의 대문자 버전의 길이(Int)
참고: 이 챌린지에서 입력값은 항상 유효한 문자열이며, 절대
null이 아닙니다. 이는 값이 존재한다는 것을 알고 있지만 컴파일러가 이를 확인할 수 없는 상황을 시뮬레이션합니다.
직접 해보기
fun getUppercaseLength(text: String?): Int {
// 여기에 코드를 작성하세요
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: Kotlin 플레이그라운드