본문 바로가기

Swift/꼬꼬무

Generic Subscripts (제네릭 서브 스크립트)

Generic Subscripts (제네릭 서브 스크립트)

서브 스크립트는 제네릭 일 수 있고 제네릭 where 절을 포함할 수 있습니다.

subscript 다음에 꺾쇠 괄호 안에 임의의 타입 이름을 작성하고 서브 스크립트의 본문에 열린 중괄호 전에 제네릭 where 절을 작성합니다.

 

예를 들어

extension Container {
    subscript<Indices: Sequence>(indices: Indices) -> [Item]
        where Indices.Iterator.Element == Int {
            var result: [Item] = []
            for index in indices {
                result.append(self[index])
            }
            return result
    }
}

 

Container 프로토콜의 확장은 시퀀스의 인덱스를 가지고 각 주어진 인덱스의 항목을 포함한 배열을 반환하는 서브 스크립트를 추가합니다.

이 제네릭 서브 스크립트는 다음과 같이 제한됩니다

  • 꺾쇠 괄호에 제네릭 파라미터 Indices 는 표준 라이브러리의 Sequence 프로토콜을 준수하는 타입이어야 합니다.
  • 서브 스크립트는 Indices 타입의 인스턴스 인 indices 라는 단일 파라미터를 가집니다.
  • 제네릭 where 절은 시퀀스에 대한 Iterator의 요소는 Int 타입이어야 합니다.

 

이렇게 하면 시퀀스의 인덱스는 컨테이너에 사용되는 인덱스와 동일한 타입입니다.

종합하면 이 제약조건은 indices 파리미터에 전달된 값은 정수 시퀀스 임을 의미합니다.

'Swift > 꼬꼬무' 카테고리의 다른 글

Error Handling  (0) 2023.08.10
Opaque and Boxed Types  (0) 2023.08.09
Generic Where Clauses (제네릭 where 절)  (0) 2023.08.07
Associated Types (연관된 타입)  (0) 2023.08.07
Generics - Type Constraints (타입 제약)  (0) 2023.07.26