[Swift] 조건문 - switch

choe_ju·2023년 9월 19일

📖 switch문 이란?

  • 표현식 혹은 변수를 매칭시켜 분기처리할때 사용하는 조건문입니다.
  • 입력값에 대해 해당 case를 지정하여 그에 맞는 부분을 실행시키기에 if문 보다는 한정적인 상황일 경우 많이 사용합니다.

📎 swift의 switch는 다른 언어들과 다른점!!

"break" 키워드를 작성하지 않고 해당 case가 진행되면 자동으로 switch 구문이 종료됩니다.

다른 언어의 경우 대부분 switch문에서 해당 case의 내부 코드가 실행된 후 break문이 없을 경우 멈추지 않고 다음 case가 계속 실행되지만, swfit에서는 해당 조건의 case문 내에 코드를 실행하고 나면 break문이 없어도 switch 구문이 자동으로 종료됩니다.

📎 switch 작성법

switch 입력 값 {	// 소괄호"()" 생략 가능

	case1 :
    	//~~~ 내부 코드1 ~~~
        // 입력 값이 값1가 나올 경우 내부 코드1 실행 후 switch 구문 종료
        
    case2 : 
    	//~~~ 내부 코드2 ~~~
        break // break를 작성하여도 무관 (선택사항)
        // 입력 값이 값2가 나올 경우 내부 코드2 실행 후 switch 구문 종료 
        
   	default:
    	//~~~ 내부 코드3 ~~~
        // 입력 값이 case에 해당하지 않을 경우 실행
}

☝🏻 입력 값에 정수 이외 튜플, 열거형 등 다양한 타입 대입 가능!!


📎 다음 case를 연속으로 실행시킬 경우

fallthrough 를 선언하여 해당 구문 실행 후 다음 case를 연속으로 실행 가능합니다

var a:Int = 3

switch a {	// 소괄호"()" 생략 가능
	case 1 : print("case1 실행")
        	 fallthrough
    case 2 : print("case2 실행")
}
== 출력값 ==
case1 실행
case2 실행

⭐️ switch문 사용 시 충족 조건

추가로 switch문 내부에서는 입력 값에 들어올 수 있는 모든 경우의 수를 다루어야 합니다. 그러지 않을 경우 오류가 발생할 수 있으므로 해당 입력값이 한정되지 않을 경우에는 default를 통해 나머지 예외처리를 할 케이스가 반드시 있어야 합니다.

var number = 2
switch number {  // 문자열
case 1:
    print("숫자 : 1")
case 2:
    print("숫자 : 2")
}

//default값이 없는 경우

위와 같이 모든 경우에 수를 다루지 않은 상황에서 default값이 없는 경우 경고문이 출력됩니다


📎 switch문 활용 예시

  • case 조건식으로 지정하기
  • 범위 연산자를 활용한 switch문
  • (번외) if문에서 범위 값 활용 방법

> case 조건식으로 지정하기

switch문 조건을 통해 확인하고 싶은 경우에는 다른 상수(혹은 변수) 값에 바인딩한 후 조건절(where)을 통해 확인을 할 수 있습니다.

var num = 3

switch num {
case let x where x % 2 == 0:	// let x = num << 이처럼 상수를 선언해 바인딩한 후 조건절로 확인
    print("짝수")		// 변수(var)도 가능
case let x where x % 2 != 0:
    print("홀수")		// "홀수" 출력
default:
    break
}

> 범위 연산자를 활용한 switch문

  • swift에서는 아래와 같이 범위 연산자를 사용해 case 값을 지정하여 블록을 만들 수 있습니다.
var score: Int = 78

switch score {
    case ..<25:    // 25미만일 경우 "F"
        print("학점은 F입니다.")
    case 25..<40:    // 25이상 40미만일 경우 "E"
        print("학점은 E입니다.")
    case 40..<55:    // 40이상 55미만일 경우 "D"
        print("학점은 D입니다.")
    case 55..<70:    // 55이상 70미만일 경우 "C"
        print("학점은 C입니다.")
    case 70..<85:    // 70이상 85미만일 경우 "B"
        print("학점은 B입니다.")
    case 85...:    // 85이상일 경우 "A"
        print("학점은 A입니다.")
default:
        print("점수가 입력되지 않았습니다.")
}

// 출력 결과 : 학점은 B입니다.

> (번외) if문에서 범위 값 활용 방법

  • if문에서 범위값을 활용하고 싶은 경우 아래와 같이 &&를 통해 작성도 가능하지만 패턴매칭 연산자를 통해 비교 가능합니다.

  • 패턴매칭 연산자는 "~="를 통해 나타내며 사용 방법은 아래와 같습니다.

if number >= 3 && number <= 5 {	// 3~5 사이의 숫자일 경우 true 출력
    print("true")
}else {
    print("false")
}

if 3...5 ~= number {	// 범위시작값...범위끝값 ~= 입력값 << 이와 같이 표현
    print("true")
}else {
    print("false")
}	//위와 결과 동일

0개의 댓글