Swift 입문 | 제어 구문 | switch 문에 의한 여러 분기
if는 부울값으로 조건을 확인하기 위해, 양자 택일의 형태밖에 처리를 분기할 수 없었다. 값을 확인하고 다수의 분기할 수 있도록 하는 것이 “switch"문이다.
switch는 체크하는 값을 준비하고, 그 값에 따라 처리 부분에 점프하는 동작을 한다. 이것은 다음과 같이 작성한다.
switch 문장의 기본
switch 체크 값 {
case 값 :
...... 수행 할 작업 ......
case 값, 값 ... :
...... 수행 할 작업 ......
default :
...... 다른 경우의 처리 ......
}
체크 값
switch문 이후에 체크하는 값을 작성한다. 이것은 값, 변수, 수식 등 값으로 취급할 것이면 무엇이든 작성할 수 있다. 이 값의 부분도 괄호는 없어도 된다 (붙여도 상관없다).
체크하는 값은 숫자, 텍스트, 논리값 어떤 것도 사용할 수 있다.
case
case에는 값을 작성한다. 그러면 switch 마련한 값이 case 값과 일치하는 처리를 실행되게 된다. 이 case에는 값을 여러개를 작성할 수 있다. 이 경우 콤마(,)로 값을 계속 작성할 수도 있다.
많은 언어에서는 case가 수행하는 작업의 마지막 구문을 빠져 위한 지침을 제공하지만 swift 필요없다(예로 break등 있다). swift에서는 case에 있는 모든 처리를 수행하면, 다음의 case 전에 자동으로 구문을 빠져 나오게 된다.
default
switch의 마지막에는 반드시 default:를 준비해야 한다. 이것은 모든 case에 일치하는 항목이 없는 경우의 처리이다. 많은 언어에서 이는 선택 사항이지만, swift의 경우 반드시 준비하는 것이 기본이다.
range 의한 범위 지정
case에는 여러 값을 지정할 수 있지만, 값이 방대해 지면 일일이 쓸 수 없게 된다. 이러한 경우에 편리한 것이 “range"연산자를 사용하여 범위 지정이다. 이것은 다음과 같이 작성한다.
최소값 ... 최대값
최소값 ..< 최대값
range를 사용하여 최소값에서 최대값까지의 범위의 모든 값을 지정할 수 있다. “…“는 최소값에서 최대값까지 “.. <“는 최소값에서 최대값 미만 (최대 값은 포함되지 않음)를 범위로 지정할 수 있다.
아래에 range를 이용한 switch에 대한 예제는 아래와 같다.
var x = 300
switch x {
case 0:
"zero"
case 1...9:
"1번"
case 10...99:
"2번"
case 100...999:
"3번"
default:
"없다"
}
이런 식으로, range를 이용해서 수치에 대한 범위를 정하여 분기 처리를 쉽게 할 수 있다.