티스토리 뷰
728x90
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
https://tourspace.tistory.com/99
728x90
'개발 언어 > 코틀린' 카테고리의 다른 글
코틀린(Kotlin) | 프로퍼티 위임 (0) | 2019.06.24 |
---|---|
코틀린(Kotlin) | 클래스 위임 (0) | 2019.06.24 |
코틀린(Kotlin) | 클래스 - 프로퍼티(Property) (2) | 2019.06.24 |
코틀린(Kotlin) | SAM Conversion (0) | 2019.06.24 |
코틀린(Kotlin) | 클래스 - 중첩 클래스와 내부 클래스 (0) | 2019.06.24 |
댓글