상세 컨텐츠

본문 제목

Swift언어 복습노트 3 - 흐름제어 in Swift

Swift언어

by 앱등개발자IOS 2022. 9. 10. 15:31

본문

 - if, else문의 조건은 항상 Bool타입이어야한다. ( C언어에서 혹은 Python에서처럼 if 1 => true  혹은 if 0 => false 로 해석될 수 없다)

 

# 1. Swift의 switch문과 break, fallthrough 

특징

- 1. C에서는 정수타입만! but Swift에서는 다양한 타입이 대상이 될 수 있다.

- 2. 명확히 한정적인 값(ex. 열거형)이 아닐 때는 default를 꼭 작성해야함

- 3. 각 case에서 범위 연산, where를 사용하여 확장 가능!

 

- 4. 각 case에서 break는 기본적으로 수행된다. 따로 작성 X 

( 해당 Case 실행 후, switch문을 벗어나지 않고 아랫쪽 case까지 탐색하고싶다면 fallthrough 키워드 사용!)

- 5. 와일드 카드 식별자를 활용하여 switch문에서 튜플을 활용할 떄, 특정 위치를 무시할 수 있다.

 

- 6. case문에 where절을 추가하여 추가적 조건을 달아줄 수 있다. 

ex. case "사원" where 인턴인가  == false:

          ~~~ 

    case "사원" where 연차 < 2 && 인턴인가 == false:

        ~~~~

 

- switch문의 exhaustive 특성과 @unknown

 

아래와 같이 한정된 범위의 모든 항목들을 처리할 case를 작성하지 않으면, exhaustive해야한다는 경고로 컴파일이 불가능하다.

아래와 같이, 새롭게 열거형에 추가될 항목을 대비하여 case default: 혹은 case _:를 작성해놓는다면,  새로운 항목이 enum에 추가되어도 오류가 뜨지 않는다.

 

하지만 새롭게 추가될 항목에 대한 대비를 @unknown과 함께 작성해놓는다면, 새로운 값에 대한 개별 switch case를 작성하라는 경고를 받을 수 있어 실수를 보다 쉽게  찾을 수 있다.

 

# 2. Swift의 반복문

- 1. C에서의 do-while문은 repeat-while문으로 구현

- 2. for문 혹은 while문 앞에 "구문 이름표"를 붙여 여러개의 반복문을 동시에 break할 수 있다!!!!

아래와 같이, j ==105가 되는 순간 바깥 Loop까지 한 번에 종료할 수 있다.

( 이와 같은 기능이 없다면, is_105라는 Bool 틱을 변수로 두어 true로 체크해주고, 바깥 for문에서 매 번 is_105  == true인지 확인하고 break해주는 코드를 실행했어야했다.)

관련글 더보기