func playLoop() {
let arr: [Int] = [1, 2, 3, 4]
//for ~ in
//nums의 요소 갯수만큼 반복문이 반복
for i in arr { // 1 2 3 4 출력
print(i)
}
//forEach
arr.forEach { //1, 2, 3 , 4 출력
print($0)
}
}
중간탈출
func playLoop() {
let arr: [Int] = [1, 2, 3, 4]
//for ~ in
for i in arr { // 1 출력
print(i)
return //추가
}
//forEach
arr.forEach { //1, 2, 3 , 4 출력
print($0)
return //추가
}
}
forEach에서 return을 만나도 1,2,3,4가 그대로 출력되는 이유?
> 클로저는 기능단위 묶음이라 리턴이 클로저 각각 수행되기 때문에 중간탈출은 불가능 (클로저의 특성 참고)
그럼에도 불구하고 중간탈출을 하고싶다?
arr.forEach {
print($0) // 1 2 3 4
return
}
arr.forEach {
print($0) // 컴파일 에러
break
}
arr.forEach {
print($0)
continue // 컴파일 에러 -> return으로 대체
}
arr.forEach { // 1 2
if $0 > 2 {
break
} else {
print($0)
}
}
조건문을 넣어주면 됨.
그런데 조건문을 활용하면 해당 개념의 특징에 조건을 걸어두는 것이기 때문에
forEach의 특성이 아닌것이 됨.
또, 이렇게 쓸 바에 for~in 문이나 while~ 문에 break를 걸어 사용하는게 낫겠죠?
[App Store] 날짜관련 앱에서 충돌이 난다면..? (1) | 2022.10.11 |
---|---|
[iOS/Swift ] UITableViewCell에서의 타입 캐스팅 (0) | 2022.10.11 |
[Swift] 다른 파일의 메서드 호출하기 (0) | 2022.08.13 |
[iOS] Rest_API (0) | 2022.08.10 |
[iOS] 싱글턴 패턴(in iOS) (0) | 2022.07.26 |