Post

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.