-
swift - Extenseion #1 (Syntax)swift 2021. 1. 12. 16:48
Extension
형식을 확장하는데 사용한다.
-> 속성, 메소드, 생성자들을 형식에 추가하는 것
extension으로 확장할 수 있는 대상
extension은 형식 선언에 새로운 멤버를 추가하는 것이 아니라 새로운 멤버는 별도의 코드조각으로 구현하고 형식과 연관시켜서
기존 멤버와 함께 사용하는 것
형식 선언이 포함되어 있는 코드를 수정할 수 없는 경우에도 문제없이 사용 가능
Int, String같은 건 실제로 struct로 구현되어 있는데 애플이 제공하는 libraray를 직접 수정하는 것은 불가능 하지만
extension으로 추가해서 사용하는 것은 가능
멤버를 추가하는 것은 가능하지만 overriding은 불가능
만약 overriding이 필요하다면 상속을 통해 구현해야 한다.
struct Size { var width = 0.0 var height = 0.0 } extension Size { // stored property는 추가 불가능 // computed property 추가가능 // var aa = 0.0 var area : Double { return width * height } } let s = Size() s.width s.height s.area // 원본 형식을 수정할 수 없는 경우 extension Size: Equatable { // size구조체가 Equatable 프로토콜을 채용한다라고 표현 public static func == (lhs: Size, rhs: Size) -> Bool { return lhs.width == rhs.width && lhs.height == rhs.height } }
'swift' 카테고리의 다른 글
swift - Extension #3 (Adding Method) (0) 2021.01.12 swift - Extension #2 (Adding Properties) (0) 2021.01.12 swift - Initializer and Deinitializer #6 (Deintializer) (0) 2021.01.12 swift - Initializer and Deinitializer #5 (Faliable Initializer) (0) 2021.01.12 swift - Initializer and Deinitializer #4 (Initializer Delegate) (0) 2021.01.12