for-in과 foreach 의 차이

·2021년 11월 2일
0

기본개념

for-in
컬렉션에 저장된 요소 수만큼 반복되며, 저장된 요소가 루프 상수에 하나씩 들어간다

foreach
반복 실행하려는 코드를 파라미터로 받고, 저장된 요소는 클로저 상수로 전달된다.

차이점: 1) continue, break 구현가능 차이

for - in문은 우리가 직접 구현하면 반복문 사용가능하나

forEach는 내가 반복하고 싶은 구문을
forEach라는 함수의 파라미터로 "클로저"로 작성해서 넘겨준다.

그렇기 때문에,
반복문 안에서만 사용할 수 있는 continue, break는
for - in 에선 사용 가능하지만, forEach에서는 불가능함

for num in nums {
    break
    continue
}
 
nums.forEach {
    break       // error! 
    continue    // error! 
}

2) return문의 영향

for - in의 경우 반복문을 돌다가 return을 만나면 함수 자체가 종료된다.

func withForIn() {
    let nums = [1, 2, 3]
    
    for num in nums {
        print(num)
        return
    }
}

foreach의 경우 반복문이 아닌 클로저 즉, 반복하고자 하는 내용을 익명 함수를 전달하기 때문에 return을 만난다는 것은 내가 전달한 클로저를 종료한다는 의미이다.
forEach는 내가 전달한 클로저를 요소 갯수 만큼이나 전부 실행한다. 0번째 반복 땐 0을 프린트하고 클로저를 return해버려서 바로 다음 1번째 반복 클로저가 실행되는 것임
한마디로 반복 횟수에 영향을 주지 않는다.

func withForEach() {
    let nums = [1, 2, 3]
    
    nums.forEach {
        print($0)
        return
    }
}

print
1
2
3
profile
코딩하는 은행원 !

0개의 댓글