티스토리 뷰

Enum

  • 자바와 같이 Enum클래스를 사용할 수 있음.
  • 일반 클래스와 같이 프로퍼티 및 생성자를 선언할 수 있다.
  • 프로퍼티와 함수를 구분하기 위해 세미콜론을 사용한다.
enum class ActiveType(val value: String) {
    ACTIVE("Y"), INACTIVE("N"); // semicolon

    fun activeTypeToBoolean() = this == ACTIVE
    companion object {
        fun booleanToActiveType(isActive: Boolean) = if (isActive) ACTIVE else INACTIVE
    }
}

fun main() {
    println("status is ${ActiveType.ACTIVE}") // status is ACTIVE
    println("status is ${ActiveType.ACTIVE.value}") // status is Y

    val activeType = ActiveType.booleanToActiveType(true)
    println("activeType is $activeType") // activeType is ACTIVE
    println("activeType is ${activeType.value}") // activeType is Y
    println("activeType to boolean ${activeType.activeTypeToBoolean()}") // activeType to boolean true
}

With When

when과 함께 다양하게 사용할 수 있다.

enum class Fruit {
    Apple, Orange, Banana
}

fun getFruitColor(f: Fruit) = when(f) {
    Fruit.Apple -> "red"
    Fruit.Banana -> "yellow"
    Fruit.Orange -> "orange"
    else -> "unknown"
}

fun isRoundFruit(f: Fruit) = when(f) {
    Fruit.Apple, Fruit.Orange -> true
    Fruit.Banana -> false
}

// 억지지만... 예시로..
fun isEqualFruit(f1: Fruit, f2: Fruit) = when(setOf(f1, f2)) {
    setOf(Fruit.Apple, Fruit.Apple) -> true
    setOf(Fruit.Banana, Fruit.Banana) -> true
    setOf(Fruit.Orange, Fruit.Orange) -> true
    else -> false
}

fun main() {
    println("apple color is ${getFruitColor(Fruit.Apple)}") // apple color is red
    println("banana is round? : ${isRoundFruit(Fruit.Banana)}") // banana is round? : false

    println("is equal fruit? ${isEqualFruit(Fruit.Apple, Fruit.Apple)}") // is equal fruit? true
    println("is equal fruit? ${isEqualFruit(Fruit.Apple, Fruit.Orange)}") // is equal fruit? false
}

 


출처

https://hongku.tistory.com/350

 

코틀린의 enum class 사용방법

enum class를 살펴보기전에 enum에 대한 개념을 간단하게 아는 것이 좋습니다. 만약 잘 알고 있는 분은 "여기"를 누르고 바로 코틀린의 enum class를 살펴보세요. JAVA의 enum 클래스 Java에서는 상수를 선언할때..

hongku.tistory.com

https://tourspace.tistory.com/99

 

[Kotlin] 코틀린 기초 #2 enum, when

이 글은 Kotlin In Action을 참고 하였습니다. 더욱 자세한 설명이나 예제는 직접 책을 구매하여 확인 하시기 바랍니다 2.3 enum 과 when 2.3.1 enum enum은 아래와 같이 사용합니다. enum class Color { RED, OR..

tourspace.tistory.com

 

댓글