육식하는야채의 개발일지
article thumbnail
Published 2024. 7. 8. 17:04
[ Swift 문법 ] Switch문 Swift/Swift 문법

📌 Switch

switch choice {   // 변수(표현식)
case "가위":    
    print("가위 입니다.")
case "바위":
    print("바위 입니다.")
case "보":
    print("보 입니다.")
default:
    break
}

switch문은 변수,표현식을 놓고 case의 값과 변수, 표현식의 값을 매칭시켜 분기처리하는 조건문이다.

 

switch choice { 
case "가위":
    print("가위 입니다.")
case "바위", "보":
    print("바위 또는 보 입니다.")
default:
    break
}

case에 콤마를 사용해서 여러 매칭값을 넣을 수 있다.

 

주의할 점❗️
switch문은 모든 경우의 수를 반드시 다루어야 한다.
- 만약 모든 사례를 다루지 않으면 default 케이스를 넣어야 에러가 발생하지 않는다.
- 각 케이스에는 문장이 최소 하나 이상 있어야 하며 만약 없다면 컴파일에러가 발생한다.
- 실행하지 않으려면 break를 반드시 입력

 

 

fallthrough

var num1 = 10

switch num1 {
case ..<10:
    print("1")      
    fallthrough
case 10:
    print("2")
    fallthrough
default:
    print("3")
}

매칭된 값에 상관없이, 무조건 다음 문장도 실행하고 싶으면 fallthrough키워드를 사용한다.

 

 

Interval Matching

var num = 30

switch num {
case 0...50: 
    print("범위: 0 ~ 50")
case 51...100:
    print("범위: 51 ~ 100")
default:
    print("그 외")
}

변수가 case문의 범위에 해당하면 print구문을 출력한다.

 

Tuple

switch 구문에 튜플을 사용할 수 있다.

let somePoint = (1, 1)
switch somePoint {
case (0, 0):
    print("\(somePoint) is at the origin")
case (_, 0):
    print("\(somePoint) is on the x-axis")
case (0, _):
    print("\(somePoint) is on the y-axis")
case (-2...2, -2...2):
    print("\(somePoint) is inside the box")
default:
    print("\(somePoint) is outside of the box")
}
// Prints "(1, 1) is inside the box"

점이 원점 (0,0)인지 X축 위에 있는지 Y축 위에 있는지, 박스 내부에 있는지 외부에 있는지를 판단하는 switch문이다.

4번째 case문에 해당하므로 (1, 1) is inside the box 구문이 출력된다.

 

Value Bindings

일치하는 값 또는 값들을 다른 변수의 이름으로 치환하여 사용하는 방식이다.

let point = (2, 3)

switch point {
case (_, 0):
    print("점이 x축 위에 있습니다. x 좌표는 \(point.0)입니다.")
case (0, _):
    print("점이 y축 위에 있습니다. y 좌표는 \(point.1)입니다.")
default:
    print("점의 좌표는 (\(point.0), \(point.1))입니다.")
}

바인딩을 사용하지 않고 작성한 코드이다. print문에서 값을 표시할 때 point.0, point.1이라고 사용해야한다.

변수명이 없기 때문에 default문을 사용해서 좌표를 표시한다.

 

let point = (2, 3)

switch point {
case (let x, 0):
    print("점이 x축 위에 있습니다. x 좌표는 \(x)입니다.")
case (0, let y):
    print("점이 y축 위에 있습니다. y 좌표는 \(y)입니다.")
case let (x, y):
    print("점의 좌표는 (\(x), \(y))입니다.")
}
// 출력: 점의 좌표는 (2, 3)입니다.

바인딩을 사용하면 더욱 읽기 쉽게 바꿀 수 있다. 각각 x와 y라는 상수에 바인딩하였기 때문에

값을 출력할 때 point.0을 x로 바꾸어 더욱 코드를 깔끔하고 가독성이 좋도록 바꿀 수 있다.

default문을 사용하지 않고 바인딩한 변수를 사용해서 case문을 구현했다.

 

Where

switch문에서 조건을 확인하는 방식이다.

let number = 15

switch number {
case let x where x % 2 == 0:
    print("\(x)는 짝수입니다.")
case let x where x % 2 != 0:
    print("\(x)는 홀수입니다.")
default:
    print("유효하지 않은 숫자입니다.")
}
// 출력: 15는 홀수입니다.

number변수를 let x에 바인딩하고

where 조건절에서 조건에 부합하는 지를 확인한다.

profile

육식하는야채의 개발일지

@육식하는야채

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!