擴展(Extension)用于為已存在的類、結(jié)構(gòu)題或枚舉等類型添加新的功能。
可以擴展計算型屬性、構(gòu)造函數(shù)、方法、下標腳本等。
extension Int{
var km:Int{
return self*1000
}
var minute:Int{
return self*60
}
//定義普通方法
func legs() -> Int{
return self*4
}
//定義可變方法 這樣的方法里邊可以修改變量的值,普通方法則不行
mutating func leg(){
self = self*4
}
}
print("1公里=",1.km,"米")
print("1小時=",1.minute,"分鐘")
let legs = 1.legs()
print("羊有",legs,"條腿")
var leg = 1
leg.leg()
print("羊有",leg,"條腿")
struct Size{
var width = 0.0
var height = 0.0
}
struct Center{
var x = 0.0
var y = 0.0
}
struct Rect{
var size = Size()
var center = Center()
}
var Rect1 = Rect()
print(Rect1)
var Rect2 = Rect(size:Size(width:1, height:2), center:Center(x:3, y:4))
print(Rect2)
extension Rect{
init(center:Center){//注意這里擴展的構(gòu)造函數(shù)不能跟原有的一樣,也就是說必須要換參數(shù)
let width = 44
let height = 55
self.init(size: Size(width:Double(width), height:Double(height)), center: center)
}
}
//在為類類型擴展構(gòu)造函數(shù)時,只可以擴展便利構(gòu)造函數(shù),指定構(gòu)造函數(shù)必須由原始的類實現(xiàn)來提供。
控制臺:
1公里= 1000 米
1小時= 60 分鐘
羊有 4 條腿
羊有 4 條腿
Rect(size: __lldb_expr_29.Size(width: 0.0, height: 0.0), center: __lldb_expr_29.Center(x: 0.0, y: 0.0))
Rect(size: __lldb_expr_29.Size(width: 1.0, height: 2.0), center: __lldb_expr_29.Center(x: 3.0, y: 4.0))