Swift - 제어 전달문

이한솔·2023년 7월 26일
0

Swift 문법 🍎

목록 보기
6/32

제어 전달문

코드의 한 부분에서 다른 부분으로 제어 흐름을 전달하여 코드가 실행되는 순서를 변경해주는 구문


break 구문

  1. switch 구문에서 개별 case 블록에 사용되어 전체 switch 구문의 실행을 종료한다.
  2. 반복문에서는 반복 실행 블록에 사용되어 조건식이 false를 반환하기 전에 미리 반복문을 종료한다.
for row in 0...5 {
    if row > 2 {
        break
    }
    print("\(row) was executed!")
}

// 출력값
// 0 was executed!
// 1 was executed!
// 2 was executed!

for i in 1...3 {
    print("outer", i)
    for j in 1...3 {
        print(" inner", j)
        
        if j > 1 {
            break  // 가장 가까운 scope의 반복문 종료
        }
    }
}

// 출력값: 
// outer 1 
//  inner 1
//  inner 2
// outer 2 
//  inner 1 
//  inner 2 
// outer 3
//  inner 1
//  inner 2


outer: for i in 1...3 {
    print("outer", i)
    inner: for j in 1...3 {
        print(" inner", j)
        
        if j > 1 {
            break outer // 구문레이블을 사용해 어떤 구문을 멈출지 명시적으로 표현함
        }
    }
}

// 출력값: 
// outer 1
//  inner 1
//  inner 2 


continue 구문

continue 구문 아래에 있는 실행 구문들을 건너뛰고 다음 반복을 시작하는 역할
(continue 구문 이후에 실행할 내용이 남아있더라도 실행되지 않는 것은 break 구문과 같지만, break 구문이 반복문을 완전히 종료하는 것과는 달리 continue 구문은 반복문의 조건을 다시 평가하고 그 결과에 따라 다음 반복을 실행한다.)

for row in 0...5 {
    if row < 2 {
        continue
    }
    print("\(row) was executed!")
}

// 출력값
2 was executed!
3 was executed!
4 was executed!
5 was executed!

for i in 1...3 {
    print("outer", i)
    for j in 1...3 {
        print(" inner", j)
        
        if j > 1 {
            continue
        }
        print("continue")
    }
}

// 출력값:
//outer 1
// inner 1
//continue
// inner 2
// inner 3
//outer 2
// inner 1
//continue
// inner 2
// inner 3
//outer 3
// inner 1
//continue
// inner 2
// inner 3

구문 레이블과 break, continue

중첩된 구문들에서 break 구문이나 contine 구문이 어떤 구문을 중단 시킬지나 작용할지 명확하게 표현하는 방법

<레이블 이름> : while <조건식> {
    <실행할 구문>
}

// 1에서 5까지 반복
outer : for i in 1...5 {
    // 1에서 9까지 반복
    inner : for j in 1...9 {
        if j==3 {
            break outer
        }
        
        print("\(i) X \(j) = \(i * j)")
    }
}

// 출력값
1 X 1 = 1
1 X 2 = 2 


fallthrough 구문

switch 구문의 흐름을 제어할 때 사용하는 구문으로 일치된 case 블록의 실행을 다음 case 블록으로 전달할 때 사용한다.
fallthrough에 의해 실행 흐름을 전달받은 case 블록은 비교 패턴의 일치 여부와 상관없이 작성된 구문을 실행한 후 switch 구문 종료한다.
버그가 발생할 수 있으므로 주의해서 사용해야한다.

let sampleChar : Character = "a"

switch sampleChar {
case "a" :
    fallthrough
case "A" :
    print("글자는 A 입니다")
default :
    print("일치하는 글자가 없습니다")
}

// 출력값
글자는 A 입니다


return 구문

함수에 주로 사용

0개의 댓글