4T2F / ThinkBig2

🌟씽크빅 2팀 스터디 🌟
2 stars 0 forks source link

Swift의 Sequence와 Collection 프로토콜에 대해 설명해주세요. #16

Open Phangg opened 7 months ago

Phangg commented 7 months ago

Swift의 Sequence와 Collection 프로토콜에 대해 설명해주세요.

Phangg commented 7 months ago

Sequence & Collection

Sequence

Sequence

Phang 의 생각 그냥 단어 뜻 그대로의 의미를 갖는 하나의 프로토콜이구나.. ( 프로토콜로 존재하는지 몰랐음 ) 아, Collection (Array, Set, Dictionary 등) 이 Sequence 프로토콜을 채택하는 관계인가보다. Sequence 프로토콜을 더 파헤치면서, Collection 도 봐야겠다.

Sequence - apple 공식문서

Collection

Collection

Collection - apple 공식문서


Custom Sequence

Custom Sequence

당연하게도, 구조체를 for-in루프를 통해 확인 할 수 없음 에러메세지를 보면, Phang 이 Sequence 를 따르지 않는다고 함

struct Phang: Sequence { func makeIterator() -> some IteratorProtocol { PhangIterator() } }

```swift
// Phang 구조체에서 한번에 진행하는 경우
struct Phang: Sequence, IteratorProtocol {
    typealias Element = Int
    var value = 1

    mutating func next() -> Element? {
        if value > 5 { return nil }
        defer { value += 1 }
        return value
    }
}

Custom Collection

Custom Collection

Phang 의 생각 위 사진처럼 재정의를 해주고 있지만... 어 그런데, Sequence 를 채택한 Collection 에서 next() 메서드가 없는데..? 필요한게 아니었나? 해서 찾아보니, 커스텀 컬렉션에서는 next()를 정의하지 않아도 된다고 함 왜?


번외 - 컴파일러가 for-in 루프를 만났을 때