swift 扩展(extension)

2017-06-27  本文已影响16人  BetterComingDay

扩展(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))
上一篇下一篇

猜你喜欢

热点阅读