-
swift - Protocols #9 (Protocol Extension)swift 2021. 1. 12. 19:27
Protocol Extension
Extension은 형식을 확장한다
Protocol 또한 형식이기 때문에 extension을 통해 확장 가능
extension으로 프로토콜을 확장하면 프로토콜을 채용한 모든 형식에 기본 구현을 제공할 수 있다.
프로토콜에는 선언만 포함된다고 공부햇는데 extension을 통해 구현을 추가한다는 것이 조금 어색할 수 있지만
문법적으로는 protocol에 구현을 추가하지만 실제로는 프로토콜을 채용한 형식에 구현이 추가된다.
코드 중복을 줄이면서 프로토콜 요구사항을 충족시킬수 있다는 장점이 있다.
protocol Figure { var name: String { get } func draw() } // 여기에서 Self는 프로토콜을 채용한 형식을 나타낸다 -> 형식이 Equatable을 채용하고 있다면 true // Figure 프로토콜과 Equatable 프로토콜을 동시에 채용하고 있어야 draw 사용가능 extension Figure where Self: Equatable{ func draw() { print("draw figure") } } struct Rectangle: Figure, Equatable { var name = "" // func draw() { // print("draw Rectangle") // } } let r = Rectangle() // 형식에서 직접 구현한 멤버는 extension으로 구현한 메소드보다 우선된다. r.draw()
'swift' 카테고리의 다른 글
swift - Value Type & Reference Type (0) 2021.01.13 swift - Memory Basics (0) 2021.01.13 swift - Protocols #8 (Optional Protocol Requiredments) (0) 2021.01.12 swift - Protocols #7 (Protocol Composition) (0) 2021.01.12 swift - Protocols #6 (Protocol Types, protocol Conformance, Collection of protocol Types) (0) 2021.01.12