본문 바로가기
Swift

Swift에서 이터레이터 패턴(Iterator Pattern)의 개념과 예제

by mr.conan 2023. 6. 15.
728x90
반응형

이터레이터 패턴(Iterator Pattern)은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나입니다. Swift에서도 이터레이터 패턴을 활용하여 컬렉션의 요소를 순차적으로 접근하고 조작할 수 있습니다. 이 블로그 포스트에서는 이터레이터 패턴의 개념을 소개하고, Swift로 구현된 예제를 통해 이터레이터 패턴의 사용법을 알아보겠습니다.

 

이터레이터 패턴의 개념: 이터레이터 패턴은 컬렉션의 내부 구조를 노출하지 않고, 요소에 접근하고 조작할 수 있는 인터페이스를 제공하는 패턴입니다. 즉, 컬렉션 내부의 요소를 반복하면서 접근하기 위한 표준화된 방법을 제공합니다. 이터레이터 패턴을 사용하면 컬렉션의 구현과 사용이 분리되며, 유연하고 확장 가능한 코드를 작성할 수 있습니다.

 

이터레이터 패턴 예제:

struct MyCollection<T> {
    private var items: [T]

    init(items: [T]) {
        self.items = items
    }
}

extension MyCollection: Sequence {
    func makeIterator() -> IndexingIterator<[T]> {
        return items.makeIterator()
    }
}

func iterateOverCollection<T>(collection: MyCollection<T>) {
    for item in collection {
        print(item)
    }
}

위의 예제에서는 MyCollection 구조체를 정의하고, 제네릭을 사용하여 요소의 타입을 유연하게 처리할 수 있습니다. MyCollection은 Sequence 프로토콜을 채택하여 이터레이터를 생성합니다. makeIterator() 메서드를 구현하여 컬렉션의 요소에 순차적으로 접근할 수 있는 이터레이터를 반환합니다.

iterateOverCollection 함수는 컬렉션을 받아 이터레이터를 통해 컬렉션의 요소를 반복하며 출력합니다.

사용 예시:

let collection = MyCollection(items: [1, 2, 3, 4, 5])
iterateOverCollection(collection: collection)

위의 예시에서는 MyCollection 인스턴스를 생성하고, iterateOverCollection 함수를 호출하여 컬렉션의 요소를 순차적으로 출력합니다.

728x90
반응형