Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Protocol
- composable architecture
- 멋사
- 알고리즘
- 후기
- widget
- 스위프트
- dispatchqueue
- widgetkit
- 운영체제
- 멋쟁이사자처럼
- c++
- 백준
- 위젯킷
- 컴퓨터그래픽스
- 스유
- 문법
- spritekit
- 웹
- 네트워크
- SwiftUI
- 대외활동
- TCA
- uikit
- 영남대
- cs
- 1일1알골
- Swift
- swift concurrency
- 리액트
Archives
- Today
- Total
맛동산이
Swift) Associated type 본문
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) }
반응형
'앱 > Swift' 카테고리의 다른 글
Swift) DiscardableResult, 알람이 필요없다면! (0) | 2024.01.01 |
---|---|
UIKit) ReactorKit 을 알아보자(feat. SwiftUI) (1) | 2024.01.01 |
UIKit) Dynamic App Icon 변경하기 (0) | 2024.01.01 |
Swift) DynamicMemberLookUp(feat. subscript) 정리 (0) | 2024.01.01 |
Swift) KeyPath란 (0) | 2024.01.01 |