안녕하세요!
사실 이번 글은 열거형으로 가져오려고 했는데, 그럼 Switch문이 사용되잖아요..?
혹시 Switch문을 잘 모르시는 분들이 계실까 해서 오늘은 Switch-Case문부터 한 번 알아보려고 합니다
❓Switch-Case
Switch-Case문이 어떤건지 살펴보기 전에 언제 사용되는지 알아볼게요
우선 if-else문에서 나이를 조건으로 학교를 나눠주게 된다면 아래와 같이 코드가 작성될 겁니다
if age >= 1 && age <= 7 {
print("baby")
} else if age >= 8 && age <= 13 {
print("elementary school")
} else if age >= 14 && age <= 16 {
print("middle school")
} else if age >= 17 && age <= 19 {
print("high school")
} else {
print("adult")
}
그런데 막상 쓰고 보니 가독성도 별로고.. 쓰는 과정 속에서 age를 쓰는 것도 귀찮은 거죠 😅
그래서 이렇게 다양한 경우의 수를 어떻게 좀 더 간결하고 간단하게 처리할 수 있을까 싶을 때 Switch-Case를 사용하게 됩니다
❓ Switch-Case
Switch-Case문도 if-else문처럼 아주 간단합니다!
우선 switch라는 키워드를 통해 어떠한 변수의 값으로 조건을 처리할지 정의해 줍니다
그러니까 위의 코드를 기준으로 변경해 보자면 이렇게 age를 기준으로 처리할 거야로 정의해 주면 되겠죠
switch age
그리고 중괄호를 열어서 각 Case를 정의하고 각 Case 별 어떤 코드를 실행할지 작성해 줍니다
이때, age(Int)를 기준으로 처리할 것이라고 이미 정의를 해주었기 때문에 if문처럼 age를 계속해서 써줄 필요가 없습니다
switch age {
case 1...7: print("baby")
case 8...13: print("elementary school")
case 14...16: print("middle school")
case 17...19: print("high school")
default: print("adult")
}
if-else로 길게 처리하던 걸 이렇게 줄여주니까 조금 깔끔해 보이지 않나요?😆
그런데 여기서 우리가 주목해야 할 지점이 하나 있습니다!
바로 default인데요
현재 default에 포함되면 adult를 출력해 달라고 하고 있습니다
그럼 이 코드를 통해 default는 저 위의 다른 Case들이 충족되지 않을 때, 실행되는 거구나 하고 유추할 수 있을 거예요
🧐 그런데 만약 default를 사용하지 않고 20살 이상의 경우를 처리하려고 한다면..?
일단 Int의 수가 엄청나게 커질 수 있는 만큼..~ 우리가 모든 경우의 수를 처리해 주기 어려울 겁니다
그리고 20살 이상부터는 어차피 모두 어른이니까 더 많은 Case를 나눌 필요도 없고요
그래도 더 나눠보고 싶다면 아래처럼 나눠줄 수는 있겠지만.. Xcode는 계속해서 default를 생성해 줘!라고 이야기합니다
우리는 우리 나름대로 모든 케이스를 처리한 것 같은데 왜?라고 하신다면 컴파일러는 정말 아주! 혹시나! 있을 예외를 처리하고 싶어 하거든요
만약 default를 사용해주고 싶지 않고 모든 케이스를 확실하게 처리하고 싶다면 다음에 살펴볼 열거형을 통해 Case들을 정의해 주면 됩니다
그렇지만 지금처럼 모든 경우의 수를 처리할 수 없을 때에는 모든 Case를 처리한 다음 default를 필수로 작성해주어야 합니다
🧐 그리고 만약 한 Case라도 실행할 코드를 작성해주지 않는다면..?
Case는 최소 하나의 실행문을 가져야 한다고 에러를 띄워줍니다!
✏️ 오늘의 요약
'Swift' 카테고리의 다른 글
❓ Enum(2) (0) | 2024.07.12 |
---|---|
❓ Enum(1) (0) | 2024.07.10 |
❓ Optional Chaining (0) | 2024.07.05 |
❓Nil Coalescing (??) (0) | 2024.07.03 |
❓ Implicitly Unwrapped Optional (1) | 2024.07.01 |