![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/6bxLf/btrXm9toJlH/O94f9Cz6DJ0kG73VcqevXK/img.png)
Protocol Type, Opaque Type 모두 얼핏 생각하면 Protocol Type은 해당 프로토콜을 채택한 타입을, Opaque Type도 해당 타입을 conform하는 세부타입을 외부에 노출되지 않게 해주는 동일 역할을 할 것으로 보여집니다. 하지만, 이 둘이 동일하다면 Opaque Type이라는 다른 명칭으로 개념이 나오지 않았을텐데요. Opaque Type은 Protocol Type과 달리, 보다 강력한 타입 보장을 하며, 타입 entity를 보존한다고 합니다. 이 특징으로인해 swift가 해당 Opaque 타입의 세부 타입을 추론할 수 있게 해준다고 하며, 일반 Protocol Type과 차이점을 갖게 됩니다. 이러한 Opaque Type, 불투명타입의 장점을 기본 Protocol ty..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/eCkPAh/btrTmYnrdnI/lA8QMvUP0s8ufeJIsAAxz0/img.png)
combine을 사용하다보면, type erasure 역할을 하는 eraseToAnyPublisher를 많이 사용하게 되는데요. 오늘은 Combine framework에서 제공하는 eraseToAnyPublisher 공식 문서를 살펴보는 시간을 가져보겠습니다. eraseToAnyPublisher Overview eraseToAnyPublisher는 instance method이며, iOS13+에서 지원합니다. type erasure와 함께 publisher를 wrapping합니다. Declaration을 보면, Output, Failure 타입을 가진 AnyPublisher를 반환하고 있습니다. eraseToAnyPublisher는 downstream subscriber에게 publisher의 상세 타입..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/I2Pax/btqFPGNJxrl/pzfxnMj4cYSkC4lFjuUg7K/img.png)
Opaque Types 불투명 타입 Opaque 반환 타입을 가진 함수, 메서드는 자신의 반환타입 정보를 외부에 숨길 수 있습니다. 일반적인 반환타입 처럼 명확한 반환 타입을 외부에 제공하는 대신 말이지요. // OpaqueType 사용 예시, 반환타입은 Shape 프로토콜을 채택한 어떠한 타입이던 될 수 있습니다. // -> 즉, 말 그대로 불투명한 타입(Opaque Type)입니다. func flip(_ shape: T) -> some Shape { return FlippedShape(shape: shape) } 반환타입을 숨기는 것은 모듈로 호출되는 코드와 모듈 사이에서 유용하게 사용되어질 수 있습니다.그 이유는 반환타입에 의존하는 타입은 private으로 유지될 수도 있기 때문입니다. 반환할때 일..
- Total
- Today
- Yesterday
- 개발자문서
- 프로토콜
- createML
- 스위프트
- 자연어처리
- swift
- 부스트코스
- Protocol
- swift알고리즘
- 백준swift
- 알고리즘
- uikit
- CoreML
- swift 기초
- swift언어
- swift 문자열
- Collection
- publisher
- 컬렉션
- Swift 알고리즘
- SwiftUI
- ios
- 백준알고리즘
- 프로그래머스
- 김프매매
- 프로그래머스swift
- swift reduce
- 알고리즘문제
- swift string
- swift문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |