더북(TheBook)

더 간편한 패턴으로, 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 사이에 위치한다. 특히 비교/동등성 연산자나 ||, &&, 대입보다 더 우선순위가 높다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.