엘비스 연산자 - swkim0128/PARA GitHub Wiki
**엘비스 연산자(?:)**는 Nullable 타입의 값이 null일 경우 기본값을 제공하는 연산자입니다. 이를 통해 null로 인한 오류를 방지하고, 보다 안전하게 코드를 작성할 수 있습니다.
val result = nullableValue ?: defaultValue
- nullableValue: null일 수 있는 값
- defaultValue: nullableValue가 null이면 대신 반환할 기본값
fun main() {
val name: String? = null
val result = name ?: "Unknown"
println(result) // 출력: Unknown
}
- name이 null이므로 "Unknown"이 반환됨.
fun main() {
val input: Int? = null
val number = input ?: 0
println(number) // 출력: 0
}
- input이 null이므로 기본값 0을 반환.
fun main() {
val name: String? = null
val length = name?.length ?: -1
println(length) // 출력: -1
}
- name?.length가 null이면 -1을 반환.
fun getUserName(): String? {
return null // 예제에서는 null을 반환
}
fun main() {
val userName = getUserName() ?: "Guest"
println(userName) // 출력: Guest
}
- getUserName()이 null을 반환하면 "Guest"를 대신 사용.
fun main() {
val names = listOf("Alice", null, "Bob")
for (name in names) {
val displayName = name ?: "No Name"
println(displayName)
}
}
출력:
Alice
No Name
Bob
- null 값이 "No Name"으로 대체됨.
엘비스 연산자는 return과 함께 사용하여 null이면 함수 실행을 종료할 수도 있습니다.
fun printLength(text: String?) {
val length = text ?: return // text가 null이면 함수 종료
println("문자열 길이: $length")
}
fun main() {
printLength(null) // 출력 없음
printLength("Hello") // 출력: 문자열 길이: Hello
}
- text가 null이면 함수가 즉시 종료됨.
fun getName(name: String?): String {
return name ?: throw IllegalArgumentException("이름이 필요합니다!")
}
fun main() {
println(getName("Alice")) // 출력: Alice
println(getName(null)) // 예외 발생: IllegalArgumentException
}
- name이 null이면 예외 발생.
✅ Null 안전성 제공
✅ 코드 가독성 향상
✅ 기본값을 간결하게 설정 가능
✅ 안전한 함수 종료 (return과 함께 사용)
연산자 | 설명 | 사용 예제 |
---|---|---|
?: | null이면 기본값 반환 | val name = nullableName ?: "Unknown" |
!! | 강제 호출 (NPE 발생 가능) | val length = nullableName!!.length |
fun main() {
val name: String? = null
println(name!!.length) // NullPointerException 발생
}
- !!는 null이 올 수 있는 상황에서 사용하면 앱이 충돌할 위험이 있음.
✅ **?:(엘비스 연산자)**를 사용하면 더 안전하게 null을 처리할 수 있습니다!
연산자 | 설명 |
---|---|
?. | null이면 연산을 중단하고 null 반환 |
?: | null이면 기본값 반환 |
!! | null이어도 강제 호출 (예외 발생 가능) |
🔹 엘비스 연산자 (?:)를 사용하면 null을 안전하게 처리하고, 기본값을 제공하여 코드의 안정성을 높일 수 있습니다! 🚀ㅑ