為現(xiàn)有的類谣殊、結(jié)構(gòu)體拂共、枚舉類型、協(xié)議添加了新功能姻几。擴(kuò)展可以:
1宜狐、添加計(jì)算屬性(get set);
2鲜棠、定義方法肌厨;
3、提供新的構(gòu)造函數(shù)豁陆;
4柑爸、使現(xiàn)有的類型遵循某協(xié)議(這種常用)
Swift中使用extension關(guān)鍵字實(shí)現(xiàn)擴(kuò)展
extension 現(xiàn)有類型{
//添加新功能
}
【演示一】 向已有的類型添加計(jì)算屬性
extension Double{
var km:Double{return self*1000.0}//新增一個(gè)只讀屬性
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()