Swift For Loops

2023년 8월 11일 수정

≡ 목차 (Table of Contents)

이 글은 Swift의 for 문과 Collection의 여러 보조 기능을 이용해 Collection의 각 아이템을 열거(iteration, 반복, 나열, 순환)하는 여러 방법을 정리한다.

for

아래는 가장 기본적이면서도 자주 사용하게 될 순환 방법이다.

for item in items {
    ...
}

indices

indices 는 Collection의 인덱스 리스트를 생성해주는 기능이다. 이를 이용하면 인덱스를 순서대로 얻을 수 있다.

for index in items.indices {
    ...
}

enumerated

enumerated 는 Collection의 각 아이템과 인덱스를 조합한 튜플 리스트를 생성해주는 기능이다.

for (index, item) in items.enumerated {
    ...
}

zip

zip 은 두 컬렉션을 튜플로 조합해주는 기능이다. 이를 이용해 다양한 루프를 구현할 수 있다. 예를 들어 위의 enumerated 를 아래와 같이 다르게 구현해 볼 수도 있다.

for (index, item) in zip(items.indices, items) {
    ...
}

forEach

forEachfor-in 루프를 간결한 문법으로 대체할 수 있게 해준다.

items.forEach { item in
    ...
}

forEach 는 코드 표현 상의 잇점만 있을 뿐 성능은 for 를 쓰는 것과 큰 차이가 없다. 어차피 내부적으로 for-in 루틴을 쓰는 것으로 알려져있다.

ForEach

forEach 와는 다르게 첫 문자가 대문자인 ForEachSwiftUI에서 루프로 뷰를 생성하는 용도로 사용된다.

VStack {
    ForEach(items) { item in
        Text(item.title)
    }
}