about 6 years ago

Extensions 可以對已存在的 class, structure, enumeration 或是 protocol 新增功能,
但要注意不能複寫原有的功能。

基本宣告

class MyClass {
}
extension MyClass {
}

新增運算 property

class MyClass {
 var num = 123
}
extension MyClass {
 var test: Int {
  get{
   return num
  }
  set {
   num += newValue
  }
 }
}

新增 initializers

需要注意的是 Class 的 extension 只能新增 convenience initializer。

Class MyClass {
}
extension MyClass {
 convenience init(para: Int) {
    self.init()
 }
}

新增 Methods

class MyClass {
}
extension MyClass {
    func test {
    print("test")
  }
}

新增 mutating methods

struct MyStruct {
 var test = 123
}
extension MyStruct {
 mutating func mu(para: Int) {
  self.test = para
 }
}

新增 subscripts

class MyClass {
}
extension MyClass {
 subscript(para: String) -> String {
  return para
 }
}

新增巢狀類型

class MyClass {
}
extension MyClass {
 enum MyEnum {
  case a
  case b
 }
}
← iOS Swift : Type Casting & Nested Types iOS Swift : Protocols →