제어전달문은 코드의 한 부분에서 다른 부분으로
제어흐름을 전달하여 코드가 실행되는 순서를 변경해주는 구문임
1.break
switch구문에서 실행 흐름이나 반복 실행 중인 루프를 조건식의 결과에 상관없이 즉각 종료하는데 사용됨
반복문에서는 false를 반환하기 전에 미리 반복문을 종료하는 역할을 함
for ~ in구문에서 break문을 써보즈아
풀이)
1. 범위연산자를 통하여 i값이 0부터 5까지의 값을 반복실행하여 가짐
2. i값이 처음에 0을 가지고 if문을 봄
만약에 i값이 2보다 크다면 break문을 통해 반복문을 종료하자
조건문에 해당안하네?
3. 출력문이 실행된다.
4. 1,2도 반복
5. i값이 3부터는 2보다 크기때문에 break문을 통해 반복문이 종료됨
2.continue문
continue 구문은 이 구문 아래에 있는 실행 구문들을 건너뛰고 다음 반복을 시작하는 역할을 함
continue구문 이후에 실행한 내용이 있어도 실행되지 않음
but 반복문의 조건을 다시 평가하고 그 결과에 따라 다음 반복을 실행함
continue 구문 아래에 있는 나머지 구문들은 실행하지 않고, 전체적인 반복은 유지함
풀이)
1. 범위연산자를 통하여 i값이 0부터 5까지의 값을 반복실행하여 가짐
2. i값이 처음에 0을 가지고 if문을 봄
3. i의 값이 2보다 작을 때는 실행을 멈추고 다시 루프를 시작해라.
(i의 값이 값이 0,1 일때 2보다 작으므로 continue에 의해 루프 다시 시작)
4. 2부터는 2보다 작은 값이 아니므로 5까지 출력이 됨
3. 구문 레이블과 break ,continue
먼저 break문이나 continue문이 중첩된 반복문에서 모든 반복문에 영향을 끼치지 않음..
다음 예제를 먼저 확인해 봄세..
풀이)
1 ~ 5 까지 반복하는 바깥쪽 루프와
1 ~ 9 까지 반복하는 안쪽 루프로 되어 있음
바깥쪽루프가 1일때 안쪽 루프가 1,2까지 출력이 되나 3이되는 순간 break문으로 인해 안쪽 루프가 종료됨
따라서 1 x 1 = 1 , 1 x 2 = 2 까지 밖에 출력이 안되는거임
하지만 바깥쪽 루프는 종료가 되지 않아 2로 다시 루프가 돌아감
나머지 바깥쪽 루프 2,3,4,5도 마찬가지임
그럼 바깥쪽 루프도 한번에 종료하기 위해서는 어떻게 해야할까??
담 코드를 봐보자
풀이)
loopFlag라는 변수를 만들어서 i가 1이고 j가 3일때 참에서 거짓 값으로 바꾸도록 한다.
loopFlag가 거짓이면 break문을 통하여 바깥 루프도 종료가 되어 두번 반복문이 실행된 후 종료가 된다
작동은 되는데 되게 억지스럽다??라고 할 정도로 매끄럽지 않은 것 같다.
그래서 우리는 이럴때 구문 레이블을 사용한다.
중첩된 구문 내에서 break나 continue구문이 어떤 구문을 중단시키는지 명확하게 표현해 줄 필요가 있음
특정구문에 레이블을 붙여서 기억할 수 있도록 하고,
흐름 제어를 적용할 수 있도록 구문 레이블을 스위프트에서 제공해줌
구문 레이블 정의하는 방법
1) for ~ in 구문 , while구문, switch구문 등 적용할 구문 앞에 레이블을 추가한다
2) 구문과 레이블 사이에 사이를 콜론( : ) 으로 구분해준다.
<레이블 이름> : while <조건식> {
<실행할 구문>
}
3) 구문 앞에 작성된 레이블 이름은 break문이나 continue문이 호출하는 대상 블록을 가리키므로
break문,continue 문 뒤에 레이블 이름을 작성해주면 됨
break <레이블 이름>
continue <레이블 이름>
3. Fall Through
한글로 해석하면 완료되지 못하다, 그르치다, 실패하다 라는 의미임
일치된 case 블록의 실행을 다음 case블록으로 전달할때 사용하는 구문임
타 언어에서는 switch구문에서 패턴이 일치하는 case블록을 실행하는 대신,
그 다음 case블록으로 실행 흐름을 전달하는 문법을 fall through라고 함.
특히, 명시를 하지 않아도 되는 암시적인 fall through 문법 도 있음.
스위프트에서는 암시적인 fall through를 지원해주지 않음
위에 코드를 보면 암시적인 fall through는 스위프트에서 사용 할 수 없음을 알 수 있음.
case 실행 블록이 비어 있어서 오류 난거기도 함😂
4. return
함수와 메소드 내에서 값을 반환하면서 실행을 종료하거나 단순히 코드의 실행을 종료하는 역할을함
나중에 자세하게 배우므로 pass...
'Swift랑 친해지기 > Swift 책보면서 정리해보기' 카테고리의 다른 글
배열정의 및 선언 - 스위프트(swift) (0) | 2022.01.19 |
---|---|
집단 자료형 4가지, 파운데이션 프레임워크 - 스위프트 (0) | 2022.01.18 |
switch 구문 - 스위프트 (0) | 2022.01.17 |
guard 구문 - 스위프트 (0) | 2022.01.17 |
if조건문 - 스위프트 (0) | 2022.01.17 |