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의 경우) 평범한 동작을 수행한다.

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