맛동산이

Swift) Associated type 본문

앱/Swift

Swift) Associated type

진ddang 2024. 1. 1. 21:24

associated type은 프로토콜에서 많이 보긴했는데 명확하게 이해가 안가서 한번더 정리한다.

Generic

지네릭은 범용타입 T를 사용해서 컴파일 시점에 타입을 지정해주는 것을 의미한다.

지네릭을 사용하면, 하나의 코드에 유연하게 코드 중복을 피해서 다양한 타입을 삽입하여 사용할수 있게 된다.

struct State<T: Equatable> { 	func plus(value: T) 	func minus(value: T) } 

이런식으로 사용하게 된다.

하지만 이것을 프로토콜로 사용할때 동일하게 명시해줘야하는것을 associated type으로 작성을 대신한다.

protocol

protocol State { 	associatedtype typeA 	func plus(value: typeA) 	func minus(value: typeA) } 

이렇게 정의해주고 사용할때 타입을 typealias로 지정해주면된다.

struct CustomA: State { 	typealias typeA = Int 	func plus(value: typeA) {} 	func minus(value: typeA) {} } 

하지만 실제로 타입이 충분히 추론 가능하다면, 제거해줘도 무방하다

struct CustomA: State { 	func plus(value: Int) {} 	func minus(value: Int) {} } 

근데 기존의 제네릭 방법으로도 가능하다?.

protocol State { 	func plus<T: Equatable>(value: T) } 
반응형