Extension

Youn·2021년 9월 28일
0

iOS-Swift

목록 보기
7/11
post-thumbnail

Extension

extension Type {
  // Type : 확장할 형식 이름
  // 추가할 멤버
  // 추가가능한 멤버 종류
  computedProperty 
  computedTypeProperty
  instanceMethod
  typeMethod
  initializer
  subscript
  nestedType
}

extension Type: Protocol, ... {
  // 기존 형식에 protocol 구현 추가
  // requirements
}
  • extension 으로 확장가능한 대상
    - class, structure
    - int나 string 혹은 이들로 구현돼 있으면 익스텐션을 통해 기존 자료형에 새로운 멤버 추가 가능
    - enumeration, protocol

  • overriding members 불가

Examples


struct Size {
    var width = 0
    var height = 0
}

/* 1. 기존 속성 접근 */
extension Size {
    var area: Double { 
         return width * height
    }
    // extension 에서 기존 속성에 접근 가능
 }
    
let s = Size ()
s.width
s.hegight
s.area 
    
/* 2.프로토콜 추가 */
 
extension Size: Equatable {
    public static func == (lshL size, rhsL  Size) -> Bool {
        return lhs.width == rhs.width && lhs.height == rhs.height
    }
} 

/* 3.Adding Properties - 계산 속성 추가 */
extension Date {
    var year: Int {
       let cal = Calender.current
       return cal.component(.year, from : self) 
   }
}
profile
youn

0개의 댓글