天天看点

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)条腿")