swift2 扩展

swift2 扩展,第1张

概述扩展就是向一个已有的类、结构体或枚举类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力。 Swift 中的扩展可以: 1.添加计算型属性和计算静态属性 2.定义实例方法和类型方法 3.提供新的构造器 4.定义下标 5.定义和使用新的嵌套类型 6.使一个已有类型符合某个协议 计算型属性 extension Double { var km: Double { return s

扩展就是向一个已有的类、结构体或枚举类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力。


Swift 中的扩展可以:
1.添加计算型属性和计算静态属性
2.定义实例方法和类型方法
3.提供新的构造器
4.定义下标
5.定义和使用新的嵌套类型
6.使一个已有类型符合某个协议




计算型属性
extension Double {    var km: Double { return self * 1_000.0 }    var m : Double { return self }    var cm: Double { return self / 100.0 }    var mm: Double { return self / 1_000.0 }    var ft: Double { return self / 3.28084 }}let oneInch = 25.4.mmprint("One inch is \(oneInch) meters")// 打印输出:"One inch is 0.0254 meters"let threeFeet = 3.ftprint("Three feet is \(threeFeet) meters")// 打印输出:"Three feet is 0.914399970739201 meters"

注: 扩展可以添加新的计算属性,但是不可以添加存储属性,也不可以向已有属性添加属性观测器


构造器
扩展可以向已有类型添加新的构造器。这可以让你扩展其它类型,将你自己的定制类型作为构造器参数,或者提供该类型的原始实现中没有包含的额外初始化选项。
扩展能向类中添加新的便利构造器,但是它们不能向类中添加新的指定构造器或析构函数。指定构造器和析构函数必须总是由原始的类实现来提供。

struct Size {    var wIDth = 0.0,height = 0.0}struct Point {    var x = 0.0,y = 0.0}struct Rect {    var origin = Point()    var size = Size()}let defaultRect = Rect()let memberwiseRect = Rect(origin: Point(x: 2.0,y: 2.0),size: Size(wIDth: 5.0,height: 5.0))extension Rect {    init(center: Point,size: Size) {        let originX = center.x - (size.wIDth / 2)        let originY = center.y - (size.height / 2)        self.init(origin: Point(x: originX,y: originY),size: size)    }}let centerRect = Rect(center: Point(x: 4.0,y: 4.0),size: Size(wIDth: 3.0,height: 3.0))// centerRect的原点是 (2.5,2.5),大小是 (3.0,3.0)



方法
extension Int {    func repetitions(task: () -> ()) {        for _ in 0..<self {            task()        }    }}3.repetitions({    print("Hello!")})// Hello!// Hello!// Hello!

extension Int {    func repetitions(task: () -> ()) {        for _ in 0..<self {            task()        }    }}3.repetitions{    print("Goodbye!")}// Goodbye!// Goodbye!// Goodbye!

extension Int {    mutating func square() {        self = self * self    }}var someInt = 3someInt.square()// someInt 现在值是 9



下标
extension Int {    subscript(var digitIndex: Int) -> Int {        var decimalBase = 1        while digitIndex > 0 {            decimalBase *= 10            --digitIndex        }        return (self / decimalBase) % 10    }}746381295[0]// returns 5746381295[1]// returns 9746381295[2]// returns 2746381295[8]// returns 7
总结

以上是内存溢出为你收集整理的swift2 扩展全部内容,希望文章能够帮你解决swift2 扩展所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1086113.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存