Swift의 switch 구문
if-else 구문: 제한된 개수의 조건을 검사
switch 구문: 많은 수의 조건을 처리
프레임
switch 표현식 {
case 일치하는 값1:
코드 구문
case 일치하는 값2:
코드 구문
case 일치하는 값3, 일치하는 값4:
코드 구문
default:
코드구문
}
- 표현식: 값을 나타내거나 값을 반환하는 표현식, switch 구문이 동작하게 하는 값
- 일치하는 값: 표현식의 값과 일치할 수 있는 값을 case 구문으로 제공, 표현식의 값과 동일한 타입
- 코드 구문: case 조건과 일치하는 값일 경우에 수행
- default절: 표현식과 일치하는 case 구문이 없을 경우에 어떻게 해야 하는지 정의(필수!)
예제
let value = 4
switch (value) {
case 0:
print("zero")
case 1:
print("one")
case 2:
print("two")
case 3:
print("three")
case 4:
print("four")
case 5:
print("five")
default:
print("Integer out of range")
}
case 구문 결합하기
let value = 1
switch (value) {
case 0, 1, 2:
print("zero, one or two")
case 3:
print("three")
case 4:
print("four")
case 5:
print("five")
default:
print("Integer out of range")
}
- 서로 다른 매칭(case)에 대해 동일한 코드 실행
switch 구문에서 범위 매칭하기
let temperature = 83
switch (temperature) {
case 0...49:
print("Cold")
case 50...79:
print("Warm")
case 80...110:
print("Hot")
default:
print("Temperature out of range")
}
where 구문 사용하기
let temperature = 53
switch (temperature) {
case 0...49 where temperature % 2 == 0:
print("Cold and even")
case 50...79 where temperature % 2 == 0:
print("Warm and even")
case 80...110 where temperature % 2 == 0:
print("Hot and even")
default:
print("Temperature out of range or odd")
}
- 부가적인 조건을 추가
- 값이 범위 조건에 일치하는지를 검사할 뿐만 아니라(AND) 그 숫자가 홀수인지 짝수인지도 검사
fallthrough
let temperature = 10
switch (temperature) {
case 0...49 where temperature % 2 == 0:
print("Cold and even")
fallthrough
case 50...79 where temperature % 2 == 0:
print("Warm and even")
fallthrough
case 80...110 where temperature % 2 == 0:
print("Hot and even")
fallthrough
default:
print("Temperature out of range or odd")
}
- 예외상황 효과 - 하나의 case 문이 거친 뒤, 그 다음 case 문의 내용을 이어서 실행
- control expression 조건을 충족하지 않아도 됨
- Swift에서는 case 구문 끝에 break를 쓸 필요가 없다.
- 다른 언어와는 달리 case 조건에 일치하면 자동으로 구문 밖으로 빠져나감
- default에서 아무런 작업도 할 필요가 없는 경우 유용
. . . default: break }