Swift - switch문이란?
Swift - switch문이란?
switch문
if,guard문과 같은 조건문에 속하는 구문임.- 처리해야할 조건이 여러 개 일 경우
if문과 비교했을 때 가독성 측면에서 더 우월함. - 비교값에 모든 케이스가
switch에 있어야하기 때문에, 일반적으로default문이 자주 사용됨.
형식
1
2
3
4
5
6
7
8
switch 비교값{
case value1:
// 실행 코드
case value2:
// 실행 코드
default:
// 기본값
}
예시
1
2
3
4
5
6
7
8
9
10
var str: String = "Hello"
switch str{
case "Hello":
print("Hello")
case "world":
print("World!")
default:
print("default")
}
결과
1
Hello
위 예시에서 확인할 수 있듯이 한 case에 매칭되면 코드를 실행한 후 바로 구문이 종료됨.
Java의 경우
break를 같이 써줘야 구문을 빠져나올 수 있음
fallthrough를 해야할 경우 아래와 같이 할 수 있음
예시
1
2
3
4
5
6
7
8
9
10
11
12
var c: Character = "a"
switch c{
case "a":
fallthrough
case "A":
print("a 또는 A")
case "B":
print("B")
default:
print("Default")
}
결과
1
a 또는 A
위 코드처럼 fallthrough 구문을 통해 인접한 case문에 접근하게할 수 있음
case에 패턴을 여러 개 지정도 가능함
예시
1
2
3
4
5
6
7
8
9
10
var n: Int = 1
switch n{
case 1, 3:
print("1 또는 3")
case 2, 4:
print("2 또는 4")
default:
print("default")
}
결과
1
1 또는 3
또한, 변수 바인딩과 조건식도 지원해줌.
예시
1
2
3
4
5
6
7
8
9
10
var n: Int = 2
switch n{
case let num where num == 1:
print("\(num) = 1")
case let num where num > 1:
print("\(num) > 1")
default:
print("기본값")
}
결과
1
2 > 1
위 코드와 같이 변수로 바인딩할 수 있으며, where를 통해 조건식도 사용 가능함.
튜플을 사용할 경우에도 편리하게 변수 치환 및 조건식 사용이 가능함
예시
1
2
3
4
5
6
7
8
9
10
var t = (2, 4)
switch t{
case let (1, x) where x == 3:
print("\(x) = 3")
case let (x, 3):
print("\(x)")
case let (x, y):
print("x = \(x) y = \(y)")
}
결과
1
x = 2 y = 4
case let (x, y):는 첫번째 값과 두번째값 모두를 바인딩하겠다는 의미
위 예시의 경우 모든 경우의 수가 switch문에 들어가기 때문에 default 구문이 필요 없음.
범위 연산자를 통한 패턴 매칭도 가능
예시
1
2
3
4
5
6
7
8
9
10
var n: Int = 2
switch n{
case 1...10:
print("1에서 10 사이")
case 11...20:
print("11에서 20 사이")
default:
print("둘 다 아님")
}
결과
1
1에서 10 사이
This post is licensed under CC BY 4.0 by the author.