본문 바로가기

Swift 문법

[Swift] Switch문

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