為現(xiàn)有的類挺份、結(jié)構(gòu)體、枚舉類型贮懈、協(xié)議添加了新功能匀泊。擴展可以:
1、添加計算屬性(get set)朵你;
2各聘、定義方法;
3抡医、提供新的構(gòu)造函數(shù)躲因;
4、使現(xiàn)有的類型遵循某協(xié)議(這種常用)
Swift中使用extension關(guān)鍵字實現(xiàn)擴展
extension 現(xiàn)有類型{
//添加新功能
}
【演示一】 向已有的類型添加計算屬性
extension Double{
var km:Double{return self*1000.0}//新增一個只讀屬性
var m:Double{return self}
var cm:Double{return self/100.0}
var mm:Double{return self/1000.0}
}
18.0.km
【案例二 】 給已有的類型添加新的方法
extension Int{
func square() {
print(self * self)
}
}
3.square()
【案例三】 向已有的類型添加新的構(gòu)造方法
extension CGRect{
init(center:CGPoint,size:CGSize) {
let originx = center.x - size.width/2
let originy = center.y - size.height/2
self.init(x: originx, y: originy, width: size.width, height: size.height)
}
}
【案例四】讓現(xiàn)有類型遵循某種協(xié)議
protocol protocol1{
func play()
}
extension Double:protocol1{
func play() {
print("給Float類型添加新協(xié)議")
}
}
3.4.play()