제어 전달문
- 코드의 한 부분에서 다른 부분으로 제어 흐름을 전달하여 코드가 실행되는 순서를 변경해주는 구문
- break, continue, fallthrough, return
* fallthrough : switch 구문의 흐름을 제어할 때, 일치된 case 블록의 실행을 다음 case 블록으로 전달시 사용
<참조>https://bangul-domato.tistory.com/28
* return : 함수와 메소드 내에서 값을 반환하면서 실행을 종료하거나 단순히 코드의 실행을 종료
break
- 실행 흐름이나 반복 실행 중인 루프를 조건식의 결과에 상관없이 즉각적으로 종료하는 데 사용
- switch 구문 : 개별 case 블록에 사용되어 전체 switch 구문의 실행 종료
- 반복문 : 반복 실행 블록에 사용, 조건식이 false를 반환하기 전 미리 반복문 종료
for row in 0...5 {
// row의 값이 2보다 커지는 4번째 반복에서 if 구문 실행
if row > 2 {
// 실행되면, 반복문 전체가 종료
break
}
print("\(row) was executed")
} // 0 was executed
// 1 was executed
// 2 was executed
continue
- continue 구문 아래에 있는 실행 구문들을 건너뛰고 다음 반복을 시작하는 역할
- 반복문의 조건을 다시 평가하고 그 결과에 따라 다음 반복을 실행함
- 전체 반복은 계속 유지된다는 것이 break 문과의 결정적 차이
for row in 0...5 {
// row 가 2보다 작을 경우 실행을 멈추고 다시 루프를 시작함
if row < 2 {
continue
}
print("executed data is \(row)")
} // executed data is 2
// executed data is 3
// executed data is 4
// executed data is 5
var text = "This is a swift book for Apple's programming language"
var result = ""
for char in text.characters {
if char == " " { // 공백은 _로 변경
result.append(Character("_"))
continue
} else if char == "o" { // 소문자 o는 대문자 O로 변경
result.append(Character("O"))
continue
}
result.append(char)
}
print(result)
// This_is_a_swift_bOOk_fOr_Apple's_prOgramming_language
구문 레이블과 break, continue
- 중첩된 구문에서 continue 나 break 를 사용하면 어떤 구문을 멈추게 하거나 다시 시작하게 할 지 명확하지 않은 문제가 있음
→ 특정 구문에 레이블을 붙여 break or continue를 사용할 때 해당 레이블을 명시하여 원하는 구문 위치에 정확히 흐름 제어가 적용될 수 있도록 함
<레이블 이름> : while / for~in / switch 등 <조건식> {
<실행할 구문>
}
break <레이블 이름>
continue <레이블 이름>
outer : for i in 1...5 {
inner : for j in 1...9 {
// j == 3일 때 break 실행
if (j == 3) {
break outer
}
print("\(i) x \(j) = \(i * j)")
}
} // 1 x 1 = 1
// 1 x 2 = 2
// 바깥쪽 루프까지 한꺼번에 종료
[Day7] Collective Types (2) : Set (0) | 2024.04.15 |
---|---|
[Day6] Collective Types (1) : Array (0) | 2024.04.14 |
[Day4] 흐름 제어 구문(2) : Conditional Statements(Branch Statements) (0) | 2024.04.09 |
[Day3-2] 흐름 제어 구문(1) : Loop Statements (0) | 2024.04.08 |
[Day3-1] Operator (0) | 2024.04.08 |
댓글 영역