더 간편한 패턴으로, return이나 throw 같은 제어 흐름을 깨는 코드를 엘비스 연산자 오른쪽에 넣는 방법이 있다. 이렇게 하면 이에 상응하는 if 식을 대신할 수 있다.
class Name(val firstName: String, val familyName: String?) class Person(val name: Name?) { fun describe(): String { val currentName = name ?: return "Unknown" return "${currentName.firstName} ${currentName.familyName}" } } fun main() { println(Person(Name("John", "Doe")).describe()) // John Doe println(Person(null).describe()) // Unknown }
IDE 팁 ≡
인텔리J 코틀린 플러그인은 널을 검사하는 if 식을 감지해서 엘비스 연산자로 바꿔주는 특별한 코드 인스펙션 기능을 제공한다(그림 4-3).
▲ 그림 4-3 엘비스 연산자로 if 식 대신하기
우선순위 면에서 엘비스 연산자는 or 등의 중위 연산자와 in, !in 사이에 위치한다. 특히 비교/동등성 연산자나 ||, &&, 대입보다 더 우선순위가 높다.