저번 포스팅에서 프로토콜의 generic, 합성, 채택 체크등 조금 더 확장된 개념을 학습했다.
이번에는 저번 학습 주제 중 generic을 프로토콜에서 편하게 사용할 수 있는
associatedtype에 대해 학습해보자
등장 배경
프로토콜에서 generic 사용할 때 번거로움이 있다.
왼쪽 사진과 같이 프로토콜 자체에 제네릭을 선언할 수 없고
만약 제네릭을 사용하고 싶으면 오른쪽 사진과 같이 타입이더라도 함수 하나하나 새로 명시를 해줘야한다.
역할
프로토콜에 사용하는 범용 타입의 역할을 한다.
특징
1) associatedtype 역시 제네릭과 마찬가지로 제약 조건을 줄 수 있다.
여기서 제약조건이란 프로토콜 채택과 클래스 상속 등을 의미한디.
2) 채택 할 때 typealias를 이용하여 명확한 타입을 명시할 수 있다.
3) typealias 을 사용하지 않으면 명확한 타입을 따로 넣어준다.
예시 코드
protocol SomeProtocol {
associatedtype T : Equatable // 제약 조건 도 줄 수 있음
func f1(value: T) -> T
}
// typealias 이용 ✅
struct SomeStruct1: SomeProtocol {
typealias T = Int
func f1(value: T) -> T {
return value
}
}
// typealias 이용 ❌
struct SomeStruct2: SomeProtocol {
func f1(value: Int) -> Int {
return value
}
}
'프로그래밍언어 > swift' 카테고리의 다른 글
property 학습하기 (1) [ Stored Property ] (0) | 2024.08.25 |
---|---|
protocol 학습하기 (4) [ any, some ] (0) | 2024.08.25 |
protocol 학습하기 (2) [ generic, 합성, 채택 체크 ] (0) | 2024.08.25 |
protocol 학습하기 (1) [ property, method, extension ] (0) | 2024.08.24 |
생성자 (0) | 2024.08.24 |