iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
2
自我挑戰組

Swift!從新手到微上手系列 第 25

Swift-Extensions

Extensions在swift中的功能很強大,因為它可以重新組織你的程式碼。使用Extensions將function加到現有的class, structure, enumeration or protocol type。即使無法修改原始的程式碼,也可以使用它來幫class增加新功能。

  • 在開發程式中,前一個人定義好了class裡的function,而後來的人無法調整
class Car {
    var length: Int = 0
    
    func countLength(cm: Int) {
        length = cm
    }
    
}
  • 前一個人決定以公分為車子的長度測量單位,但後面開發人員想以公尺為單位做測量,但無法編輯。所以可以使用Extensions做設置
extension Car {
    func countLength(meter: Int) {
        length = meter
    }
}
  • 現在可以使用countLength(meter: Int)這個function去做計算

在swift compile時,所定義的Extensions會加到本來的class中,會與原本的合併為同一個,所以會使用到後面Extension的新功能

Extensions可以做到的事情

  • 添加function 和 computed property
  • 提供新的初始化器
  • 使用subcript function定義subscript
  • 使目前的類型去符合protocol
  • 將現有的class添加新的protocol

Extensions不能修改基本結構,只能添加function,無法將新的property添加到現有的property。

Extension的實際運用的好處

  • 分離與分組代碼
  • 協議內容更一致
  • 可以新增computed property
  • protocol extensions

上一篇
Swift-UserDefault
下一篇
Swift-GCD (Grand Central Dispatch)
系列文
Swift!從新手到微上手30

尚未有邦友留言

立即登入留言