扩展(Extension)用于为已存在的类、结构题或枚举等类型添加新的功能。
可以扩展计算型属性、构造函数、方法、下标脚本等。
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){//注意这里扩展的构造函数不能跟原有的一样,也就是说必须要换参数
let width = 44
let height = 55
self.init(size: Size(width:Double(width), height:Double(height)), center: center)
}
}
//在为类类型扩展构造函数时,只可以扩展便利构造函数,指定构造函数必须由原始的类实现来提供。
控制台:
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))