이번에는 switch에 대해서 다뤄볼 것이다.
switch를 언제쓰면 좋냐?
그건 구분해야할 게 많은 경우에 사용하면 좋다.
예를 들어, 입장하는 손님의 나이가 10대인지, 20대인지, 30대인지 .... 90대인지 확인하기 위해서는
다음과 같이 조건문을 작성해야 할 것이다.
var age: Int = 19
if age < 20 {
print("10대 입니다.")
} else if age < 30 {
print("20대 입니다.")
} else if age < 40 {
print("30대 입니다.")
} else if age < 50 {
print("40대 입니다.")
...
} else if age < 90 {
print("80대 입니다.")
} else if age < 100 {
print("90대 입니다.")
}
이렇게 쓰면 너무 복잡하기도 하고 많은 텍스트를 작성해야 한다는 귀찮음이 있다.
그래서 우리는 switch를 배워볼 것이다.
switch Statement
코드를 보고나서 설명을 해보겠다.
var age: Int = 19
switch age {
case 10...19:
print("10대 입니다.")
case 20...29:
print("20대 입니다.")
case 30...39:
print("30대 입니다.")
case 40...49:
print("40대 입니다.")
...
case 80...89:
print("80대 입니다.")
case 90...99:
print("90대 입니다.")
}
확실히 아까보다는 보기 편해졌다.
위 코드처럼 switch문은
switch 변수 {
case 조건:
실행 시킬 코드
case 조건:
실행 시킬 코드
case 조건:
실행 시킬 코드
}
이렇게 작성하면 된다.
C언어와 다른 점은, C언어는 해당되는 case문을 기준으로 그 아래로 모든 case가 전부 실행돼서 break;를 따로 작성해주어야 하지만
Swift는 그렇지 않고 해당 case만 실행된다는 장점이 있다.
또, Swift에서 Switch문을 사용하는 경우에는 모든 경우를 고려해야 한다.
이말은 예외처리를 해야한다는 것이다.
예를 들어, 1~9 사이의 값을 입력받아야 하는데 10이나 -1을 입력받으면 에러가 발생할 수 있으니
Swift에서는 default를 반드시 넣는 것을 권장한다.
다른 생김새의 switch를 확인해 볼 것이다.
먼저, 성이 Kim인지 Lee인지 Park인지를 확인하는 switch를 작성할 때에는
var name: String = "Lee"
switch name {
case "Kim":
print("성이 김입니다.")
case "Lee":
print("성이 이입니다.")
case "Park":
print("성이 박입니다.")
default:
print("성이 김, 이, 박 중에 존재하지 않습니다.")
}
이런 식으로 작성해야한다.
다음으로는 하나의 case에 여러개의 조건을 넣는 경우를 보여줄 것이다.
var country: String = "한국"
switch country {
case "한국", "일본", "중국":
print("\(country)는 아시아에 있습니다.")
case "미국", "캐나다":
print("\(country)는 북아메리카에 있습니다.")
default:
print("이 나라는 어딘가에 있습니다.")
}
위에 보이는 것처럼 하나의 case에 콤마(,)로 구분을 지어서 넣어주면 된다.
마지막으로는 살~짝 어려운건데
where이라는 처음보는 문법이 등장한다.
이는 switch에서 확인하려는 변수에 조건문을 넣는 느낌이라고 생각하면 좋다.
홀수인지 짝수인지 아는 방법을 switch + where을 사용하여 작성해볼 것이다.
var score: Int = 64
switch score {
case let x where x % 2 == 0:
print("짝수입니다.")
case let x where x % 2 == 1:
print("홀수입니다.")
default:
print("모르겠습니다.")
}
이런식으로 let x라는 상수를 만들어놓으면 x값이 일시적으로 score의 값을 갖게 되며,
그 x값을 가지고 조건을 판단한다.
그리고 let대신에 var을 쓰면 어떻게 되는지 궁금해서 해보면, 에러가 발생한다.
다 작성해놓고 보니
if ~ else와 다를게 없다고 생각이 들 수 도 있다.
그래서 찾아보니까 switch를 사용하면 성능 최적화 및 가독성이 올라간다는 장점이 있다 :)
상황에 맞게 적절히 잘 사용하면 될 것 같다.
'💻 소프트웨어(SW) > Swift' 카테고리의 다른 글
[Swift] 5. 반복문(for - in, stride 함수) (0) | 2024.01.21 |
---|---|
[Swift] 4-1. 조건문(if, else) (0) | 2024.01.15 |
[Swift] 3. 연산자(덧셈, 뺄셈, 곱셈, 나눗셈 등) (0) | 2024.01.12 |
[Swift] 2. 변수(Int, Double, String, Bool) (0) | 2024.01.10 |
[Swift] 1. Hello, World를 출력해보자! (0) | 2024.01.06 |