switch문은 if문보다 조건의 범위가 한정적일 때 쓰인다.
조건을 부등식이 아닌 오로지 " == "으로만 비교한다.
한마디로 "너 이거 맞아? 아니야?" 이런식이다.
예시를 들어보겠다.
var drink: String = "포카리스웨트"
switch drink {
case "포카리스웨트":
print("포카리스웨트를 선택")
case "게토레이":
print("게토레이를 선택")
default:
break
}
변수 drink의 값이 case의 값과 일치하면 해당 실행문을 실행한다.
switch문은 모든 경우의 수를 다루어야 한다.
따라서 case문으로 모든 경우의 수를 다룰 수 없다면 default 키워드를 사용하여 나머지 경우를 다룬다.
switch문에서는 실행문을 공백으로 둘 수 없고, 그러한 경우를 대체하여 break 키워드를 명시한다.
break는 아무것도 하지 않고 switch문을 종료시킨다.
switch문에서의 or 연산자
or 연산자는 쉼표로 대체할 수 있고, and 연산자는 case문에서 사용할 수 없다.
var drink: String = "포카리스웨트"
switch drink {
case "포카리스웨트", "게토레이":
print("이것은 음료수입니다.")
default:
break
}
fallthrough 키워드
다음블록을 무조건 실행한다.
이 때, 다음블록은 매칭된 값에 상관없이 실행된다.
var number = 10
switch number {
case 10:
print("10입니다.") // 콘솔에 출력
fallthrough // 다음 case문 실행
case 11: // 값은 상관없음
print("11입니다.") // 콘솔에 출력
default:
break
}
범위연산자
switch문의 case에서는 부등식 사용이 불가능하다.
이를 대체하기 위하여 범위연산자 사용이 가능하다.
// 예시 1
var number = 10
switch number {
case 10...:
print("10 이상입니다."}
case 1..<10:
print("1 이상 10 미만입니다."}
default:
print("0이거나 음수입니다.")
}
// 예시 2
let point = (3, 2)
switch point {
case (-4...4, -4...4):
print("주위에 있음")
default:
print("멀음")
}
범위연산자 참고
- 0…50 → 0부터 50까지
- 50… → 50 이상
- …50 → 50 이하
- 1..<50 → 1 이상 50 미만
- ..<50 → 50 미만
- ~= → 값이 범위에 속한다면? 참: 거짓 (아래 예시)
var number = 30
0...50 ~= number // True 반환
switch문 바인딩과 where절
switch문에서는 조건을 확인하여 해당 case문에서 새로운 변수에 바인딩할 수 있다.
이 때 where절을 사용하여 조건문을 작성할 수도 있다.
var number = 12
switch number {
case let a where a % 2 == 0: // var도 사용가능 -> 실행문에서 값 변경이 필요할 경우
print("\\(a)는 짝수입니다.") // 콘솔에 출력
case let a where a % == 1:
print("\\(a)는 홀수입니다.")
default:
break
}
where 절에는 일반적인 조건문을 입력한다.
범위연산자는 where문에서 쓰이지 않는다.
'Swift 문법' 카테고리의 다른 글
[Swift] Enum(열거형) (0) | 2022.07.16 |
---|---|
[Swift] 함수 (0) | 2022.07.15 |
[Swift] 튜플 (0) | 2022.07.14 |
[Swift] 연산자 팁 (0) | 2022.07.12 |
[Swift] 변수와 타입 (0) | 2022.07.11 |