본문 바로가기

학습 노트/Swift (2021)

039 ~ 042. Control Transfer Statements, Labeled Statement (흐름 제어 문)

Control Transfer Statements

fallthrough, throw, return, break, continue가 해당되며,
이전에 설명했던 fallthrough를 제외한 break, continue를 일단 정리하고, throw와 return은 함수에서 다시 정리한다.

Transfer Control

제어 전달은 현재 실행중인 scope에서 코드를 중지하고 다음에 실행할 코드를 실행하는 것을 말한다.

 

break Statement

switch문과 반복문 두루 사용 가능하다.
현재 실행중인 문장을 중지하고 다음 문장을 진행한다.

switch문에서 사용할 경우

let num = 1

switch num {
case 1...10:
    print("begin")
    
    if num % 2 != 0 { //num의 값이 홀수인지 확인
    break
    }
    print("end")
default:
    break
}

print("done")

 

결과

begin
done

num이 1로 홀수이기 때문에 break를 통해 switch문을 종료.
따라서 begin 이후에 바로 done이 출력된다.

let num = 2

switch num {
case 1...10:
    print("begin")
    
    if num % 2 != 0 { //num의 값이 홀수인지 확인
    break
    }
    print("end")
default:
    break
}

print("done")

 

결과

begin
end
done

num의 초기값이 2, 짝수이기 때문에 break에 영향을 받지 않고 end까지 출력한 다음 switch문이 동료된다.
따라서 begin, end, done의 순서대로 출력된다.

for문에서 사용할 경우

for index in 1...10 {
    print(index)
    
    if index > 1 {
        break
    }
}

 

결과

1
2

반복문의 첫번째 index가 1이기 때문에 1을 정상적으로 출력하고,
두번째 index가 2이기 때문에 if문에 걸려 for문이 종료된다.
따라서 1, 2까지 순서대로 출력된다.

for i in 1...10 {
    print("out loop", i)
    
    for j in 1...10 {
        print("    in loop", j)
    
        if j > 1 {
        break
        }
    }
}

 

결과

out loop 1
in loop 1
in loop 2
out loop 2
in loop 1
in loop 2
.
.
.
out loop 10
in loop 1
in loop 2

j가 1보다 커지면 문장을 종료한다.
이 때 마찬가지로 문장을 종료하지만 중첩되어 있을 경우 자신이 속한 scope의 문장을 종료한다.
따라서 in loop는 2까지만 출력 되고, out loop는 10까지 반복된다.

 

continue Statement

반복문에서만 사용할 수 있다.

for index in 1...10 {
    if index % 2 == 0 {
        continue
    }
    
    print(index)
}

 

결과

1
3
5
7
9

반복은 10번 모두 진행하지만, 짝수인 경우 다음 회차로 넘어간다.
따라서 홀수 Index만 출력된다.

for i in 1...10 {
    print("out loop", i)

    for j in 1...10 {
        if j % 2 == 0 {
            continue
        }

    print("    in loop", j)
    }
}

 

결과

out loop 1
in loop 1
in loop 3
in loop 3
in loop 5
in loop 7
in loop 9
out loop 2
in loop 1
in loop 3
in loop 5
in loop 7
in loop 9
.
.
.
out loop 10
in loop 1
in loop 3
in loop 5
in loop 7
in loop 9

break과 마찬가지로 자신이 속한 scope의 문장만 종료한다.

 

Labeled Statements

Syntax

Label: statement

break Label
continue Label


break와 continue에 사용하며,
반복문, if문, switch문에서 주로 사용한다.

outer: for i in 1...3 {
    print("out loop", i)
    
    for j in 1...3 {
        print("  in loop", j)
        
        break outer
    }
}
결과

out loop 1
in loop 1

중첩된 코드라 break시 자신이 포함된 j 반복문이 종료되어야 하지만,
i 반복문에 붙여진 'outer' label을 종료하고 있기 때문에 모든 반복문이 종료된다.


Log

2021.08.06.
블로그 이전으로 인한 글 옮김 및 수정