when을 사용하는 열거형
모든 경우를 처리합니다
when을 사용하는 열거형은(는) CoddyKit의 무료 Kotlin Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kotlin Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
열거형과 조건식의 조합
when 표현식은 열거형에 따라 분기하는 자연스러운 방법입니다. 각 상수에 고유한 분기를 지정할 수 있습니다.
enum class Light { RED, YELLOW, GREEN }
fun action(l: Light) = when (l) {
Light.RED -> "Stop"
Light.YELLOW -> "Slow"
Light.GREEN -> "Go"
}
fun main() {
println(action(Light.GREEN))
}모든 경우 다루기
when을 열거형에 대한 표현식으로 사용하면서 모든 상수를 다루면 else 분기가 필요하지 않습니다. 컴파일러가 모든 경우가 처리되었는지 확인합니다.
enum class Coin { HEADS, TAILS }
fun flip(c: Coin) = when (c) {
Coin.HEADS -> "Win"
Coin.TAILS -> "Lose"
}
fun main() {
println(flip(Coin.HEADS))
}컴파일러가 안전성을 보장합니다
나중에 새 상수를 추가하고 분기를 작성하는 것을 잊으면 컴파일러가 오류를 보고합니다. 따라서 열거형과 when을 함께 사용하면 코드를 안전하게 발전시킬 수 있습니다.
enum class Size { S, M, L }
fun label(s: Size) = when (s) {
Size.S -> "Small"
Size.M -> "Medium"
Size.L -> "Large"
}
fun main() {
println(label(Size.M))
}상수 가져오기
열거형 멤버를 가져오면 when 내부에서 타입 접두사를 생략할 수 있어 분기를 더 짧게 작성할 수 있습니다.
enum class Dir { UP, DOWN }
import Dir.UP
import Dir.DOWN
fun move(d: Dir) = when (d) {
UP -> "y + 1"
DOWN -> "y - 1"
}
fun main() {
println(move(Dir.UP))
}분기 그룹화하기
여러 상수를 쉼표로 나열하면 하나의 분기를 공유하게 할 수 있습니다.
enum class Day { MON, TUE, WED, SAT, SUN }
fun kind(d: Day) = when (d) {
Day.SAT, Day.SUN -> "Weekend"
else -> "Weekday"
}
fun main() {
println(kind(Day.SAT))
}서로 다른 타입 반환하기
각 분기는 값을 생성할 수 있으며, 전체 when은 그 값이 됩니다.
enum class Tier { FREE, PRO }
fun limit(t: Tier): Int = when (t) {
Tier.FREE -> 10
Tier.PRO -> 1000
}
fun main() {
println(limit(Tier.PRO))
}인수 없이 조건식 사용하기
조건에 따라 분기할 수도 있지만, 열거형에서는 주제를 지정하는 형식이 가장 깔끔하고 모든 경우를 확인할 수 있습니다.
enum class Mood { HAPPY, SAD }
fun emoji(m: Mood) = when (m) {
Mood.HAPPY -> ":)"
Mood.SAD -> ":("
}
fun main() {
println(emoji(Mood.HAPPY))
}분기에서 부수 효과 사용하기
분기에서는 값을 반환하는 것뿐 아니라 문을 실행할 수도 있습니다.
enum class Cmd { START, STOP }
fun run(c: Cmd) {
when (c) {
Cmd.START -> println("Starting...")
Cmd.STOP -> println("Stopping...")
}
}
fun main() {
run(Cmd.START)
}가능하면 else 피하기
else를 사용하면 모든 경우를 확인하는 기능이 무력화됩니다. 나중에 새 상수를 추가해도 해당 상수가 조용히 else로 들어가기 때문입니다. 열거형에서는 명시적인 분기를 우선 사용합니다.
enum class State { ON, OFF }
fun text(s: State) = when (s) {
State.ON -> "on"
State.OFF -> "off"
}
fun main() {
println(text(State.OFF))
}현실적인 라우터
사용자 역할을 권한에 매핑하는 것은 모든 경우를 처리하는 when의 깔끔한 활용 방법입니다.
enum class Role { ADMIN, USER, GUEST }
fun canDelete(r: Role) = when (r) {
Role.ADMIN -> true
Role.USER -> false
Role.GUEST -> false
}
fun main() {
println(canDelete(Role.ADMIN))
}속성과 함께 사용하기
열거형에 따라 분기하면서 각 분기 안에서 해당 열거형의 속성도 사용할 수 있습니다.
enum class Coin(val cents: Int) { PENNY(1), DIME(10) }
fun describe(c: Coin) = when (c) {
Coin.PENNY -> "Worth ${c.cents}"
Coin.DIME -> "Worth ${c.cents}"
}
fun main() {
println(describe(Coin.DIME))
}빠른 확인
when과 함께 사용하는 열거형에 대한 이해를 확인해 보세요.
복습
열거형을 when과 함께 사용하는 방법을 배웠습니다:
- 열거형에 대한
when은else없이도 모든 경우를 처리할 수 있습니다. - 컴파일러가 모든 상수가 처리되었는지 확인합니다.
- 상수를 쉼표로 그룹화할 수 있으며, 각 분기는 값을 생성합니다.
- 모든 경우를 안전하게 처리하려면
else를 피합니다.
enum class Light { RED, GREEN }
fun go(l: Light) = when (l) {
Light.RED -> false
Light.GREEN -> true
}
fun main() {
println(go(Light.GREEN))
}자주 묻는 질문
“when을 사용하는 열거형” 강의는 무료인가요?
네 — “when을 사용하는 열거형” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kotlin Academy 강의 전체를 잠금 해제할 수 있습니다. Kotlin Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“when을 사용하는 열거형”에서 뭘 배우나요?
모든 경우를 처리합니다 브라우저에서 직접 실행하는 실습 코드로 Kotlin Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Kotlin Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Kotlin Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“when을 사용하는 열거형” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Kotlin Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Kotlin Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 열거형 정의
- 열거형 속성과 메서드
- when을 사용하는 열거형
- 열거형 값과 서수