天天看點

Swift 中的擴充 (Extension)

Swift 擴充

  • 擴充(Extension)用于為已存在的類,結構體或者枚舉等類型添加新的功能
  • 擴充可以對一個類型添加新的功能,但是不能重寫已有的功能
  • Swift 中的擴充可以:

    1.添加計算型屬性和計算型靜态屬性

    2.定義執行個體方法和類型方法

    3.提供新的構造器

    4.定義下标

    5.定義和使用新的嵌套類型

    6.使一個已有類型符合某個協定

  • 擴充使用 extension 來聲明
  • 格式:
extension 類型名 {
   //添加的新功能
 }           

示例一 給 Double 類型擴充計算屬性

extension Double {
    var km : Double {
        return self * 1000
    }
    var cm : Double {
        return self/100
    }
}
let kil = 1.km
print("\(kil)米")
let tem = 3.cm
print("\(tem)厘米")           

示例二 擴充構造函數

  • 擴充構造函數就是為一個類型(類、結構體、枚舉)添加閑的構造函數
class Animal {

    var name : String?
    var age : Int?
    init(name: String,age: Int) {
        self.name = name
        self.age = age
    }
}
//擴充 Aniaml 類
extension Animal {
    //周遊構造函數
    convenience init(name : String){
        self.init(name: name, age: 18)
    }
}

let dog = Animal(name: "小��")
let cat = Animal(name: "小��", age: 3)           

示例三 : 擴充方法

extension Int {

    static var num : Int = 4

    func legInt() -> Int {
        return self * Int.num
    }
    mutating func legInt1(){
        self = self*Int.num
    }
}
let cat1 = 6.legInt()
print("6 隻��有\(cat1)條腿")

var cat2 = 8
cat2.legInt1()
print("8 隻��有\(cat2)條腿")