enum class Color {
RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}
- enum 은 코틀린에서
소프트 키워드
로 취급
class
앞에 사용될 떄만 특별한 의미를 갖는다.
프로퍼티와 메서드가 있는 enum 클래스
fun main() {
println(Color.BLUE.rgb());
}
enum class Color(val r: Int, val g: Int, val b: Int) {
RED(255, 0, 0), ORANGE(255, 165, 0),
YELLOW(255, 255, 0), GREEN(0, 255, 0),
BLUE(0, 0, 255), INDIGO(75, 0, 130),
VIOLET(238, 130, 238);
fun rgb() = (r * 256 + g) * 256 + b
}
//255 출력됨
when
을 사용한 ENUM 의 처리
fun getMnemonic(color: Color) =
when (color) {
Color.RED -> "Richard"
Color.ORANGE -> "Of"
Color.YELLOW -> "York"
Color.GREEN -> "Gave"
Color.BLUE -> "Battle"
Color.INDIGO -> "In"
Color.VIOLET -> "Vain"
}
fun main() {
println("getMnemonic( Color.BLUE) = " + getMnemonic(Color.BLUE));
}
Color
열거형의 값에 대해 해당하는 문자열을 반환
when
은 color
변수의 값에 따라 적절한 분기를 선택함
여러 가지 값의 매칭
fun getWarmth(color: Color) =
when (color) {
Color.RED, Color.ORANGE, Color.YELLOW -> "warm"
Color.GREEN -> "neutral"
Color.BLUE, Color.INDIGO, Color.VIOLET -> "cold"
}
ENUM 상수 임포트
import Color.*
fun getWarmth(color: Color) =
when (color) {
RED, ORANGE, YELLOW -> "warm"
GREEN -> "neutral"
BLUE, INDIGO, VIOLET -> "cold"
}
- 뭐 이런식으로 임포트도 된다고 하는데, 이건 자바에서도 동일하다..
아직은 자바17 에서의 Switch 문과 뭐가 다른건진 잘 모르겠다.
Uploaded by N2T
'코틀린 > 코틀린인액션' 카테고리의 다른 글
[코틀린인액션] 변수 (0) | 2023.11.23 |
---|---|
[코틀린인액션] 프로퍼티 (0) | 2023.11.23 |
[코틀린인액션] when 과 임의의 객체 (0) | 2023.11.23 |
[코틀린인액션] 스마트 캐스트 (0) | 2023.11.23 |
[코틀린인액션] 스마트 캐스트 (0) | 2023.11.23 |