더북(TheBook)

when 식을 사용해 enum 항목마다 서로 다른 동작을 수행할 수 있다. 다음 코드에서는 Level의 원소들뿐 아니라 Level이라는 이름까지 임포트해 사용한다.

Enumerations/CheckingOptions.kt

package checkingoptions
import atomictest.*
import enumerations.Level
import enumerations.Level.*

fun checkLevel(level: Level) {
  when (level) {
    Overflow -> trace(">>> Overflow!")
    Empty -> trace("Alert: Empty")
    else -> trace("Level $level OK")
  }
}

fun main() {
  checkLevel(Empty)
  checkLevel(Low)
  checkLevel(Overflow)
  trace eq """
    Alert: Empty
    Level Low OK
    >>> Overflow!
  """
}

checkLevel()은 이넘 상수 중 두 가지에 대해서만 특정 동작을 수행하고, 나머지 상수에 대해서는(else의 경우) 평범한 동작을 수행한다.

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