-
안녕하세요. 그린입니다!
이번 포스팅에서는 흐름제어에 대해 알아보겠습니다.
코딩을 하다보면 특정 명령어를 반복해서 실행해야 하는 일도 종종 발생합니다.
이럴때 사용하는것이 조건문과 반복문입니다.
스위프트에서는 흐름제어 구문에 소괄호() 를 대부분 생략 할 수 있는점의 타 언어와 차이점이 있습니다.
그렇지만 중괄호{}는 생략할 수 없습니다.
타 언어와의 흐름제어 사용법에서 조금 차이가 나는 부분을 잘 찾아보면서 지금부터 한번 알아보도록 하죠^^
1. 조건문
조건문은 if / switch / guard 구문이 있습니다. 이번 포스팅에서는 if와 switch 구문을 학습하고
guard 구문은 다음 포스팅에서 알아보겠습니다.
1-1. if 구문
대표적인 조건문으로 if,else 등의 키워드를 사용하여 구현
조건값이 꼭 Bool 타입 (True, False)여야 합니다.
else if는 많아도 상관 없으며 else 블록은 없어도 상관 없습니다.
조건수식을 소괄호로 감싸주는 것은 선택사항입니다.
1-2. switch 구문
if 구문과 같은 역할을 합니다. 마찬가지로 소괄호()를 생략할 수 있습니다.
그러나 break 키워드 사용은 선택 사항으로 타 언어와 차이가 있습니다.
구문의 조건에는 다양한 값이 들어갈 수 있습니다.
그러나 case에 들어갈 비교 값은 입력 갑과 데이터 타입이 같아야 합니다.
-. 조건값 범위사용 가능
-. 한정된 범위가 명확하지 않다면 default 사용은 필수
-. fallthrough 키워드로 다음 case도 실행
-. break 키워드로 구문 탈출
-. 입력 값 : 문자,문자열,열거형,튜플,범위,패턴이 적용된 타입 등 다양한 타입의 값 사용 가능
-. case X : 다음에는 꼭 실행 가능한 코드 위치 필요
와일드카드 식별자(_)와 값 바인딩
-. 와일드카드 식별자를 사용하면 무시된 값을 직접 가져와야하는 불편함 존재
-. let을 붙인 값 바인딩 사용
where 키워드를 사용한 case의 조건 확장 또한 가능합니다.
-> case "이름" where 박씨인가 == true:
unknown속성의 사용
차후에 추가할 case를 처리하지 않으면 경고를 내어줄 수 있는 키워드
-> @unknown case _:
2. 반복문
조건에 따라 실행되는 명령어를 조건문을 통해 분기했다면, 같거나 비슷한 명령을 반복 실행할때는 반복문을 사용합니다.
for-in 구문과 repeat-while 구문의 반복문의 사용을 살펴보겠습니다.
2-1. for-in 구문
반복적인 데이터나 시퀀스를 다룰때 많이 사용
for 임시상수 in 시퀀스 아이템 {
실행코드
}
-. continue 키워드를 사용하면 바로 다음 시퀀스로 이동
-. 시퀀스에 해당하는 값이 필요 없다면 와일드카드 식별자(_) 사용
-. 추후 for-in 구문보다 map,filter,flatMap 등을 더 많이 사용하게 되는데 이후 포스팅에서 다뤄보겠습니다.
2-2. while 구문
타 언어의 while 구문과 동일하게 사용됩니다.
조건(Bool 타입)이 성립하면 블록 내부 코드를 반복 실행합니다.
for-in 구문과 동일하게 continue, break 등의 제어 키워드 사용이 가능합니다.
2-3. repeat-while 구문
타 언어의 do-while 구문과 동일하게 사용됩니다.
repeat 블록의 코드를 최초 1회 실행 후, 조건 검사하여 코드 반복 실행합니다.
3. 구문 이름표
반복문을 작성하다 보면 중첩으로 작성 할 경우가 있습니다. 이때 반복문을 제어하는 키워드(break, continue 등)가 어떤 범위에 적용되는지
애매하여 실수를 야기시킬 수 있습니다. 그럴때 반복문 앞에 이름과 함께 콜론(:)을 붙여 구문의 이름을 지정해주는 구문 이름표를 사용 !
오늘은 이렇게 조건문과 반복문을 통한 코딩 흐름제어에 대해 알아봤습니다.
가장 코딩을 하며 기초가 되며 많이 활용되는 부분으로 꼭 숙지를 해야하는 부분입니다.
다음 포스팅에서는 이제 코딩을 더 한걸음 나아가기 위한 함수에 대해 알아보겠습니다.
함수를 정의하며 선언하고 또한 함수의 특성에 대해 알아보도록 하겠습니다!
만약 제 포스팅에서 수정되어야 할 부분들이 있다면 꼭 댓글 남겨주시면 감사하겠습니다.
감사합니다 :D
'Swift' 카테고리의 다른 글
특수 기호와 문자 읽는법 (0) 2020.11.02 함수 (0) 2020.11.02 연산자 (0) 2020.11.01 데이터 타입 (고급) (0) 2020.10.30 데이터 타입 (기본) (0) 2020.10.30