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 |