extension(扩展)使用详情

1.extension(扩展)

扩展为现有的类,结构体,枚举类型,或协议添加了新功能.这也包括了为无访问权限的源代码扩展类型的能力(即所谓的逆向建模)

扩展和OC的中category类似.(与OC的分类不同的是,Swift的扩展没有名字)

2.extension的能力

1.添加计算实例属性和计算类型属性

2.定义实例方法和类型方法

3.提供新初始化器

4.定义下标

5.定义和使用新内嵌类型

6.使现有的类型遵循某协议

7.扩展可以向一个类型添加新的方法,但是不能重写已有的方法

扩展可以向自己已有的类型添加计算实例属性和计算类型属性

extension Double {
    
    var km:Double {return self * 1000.0 }
    
    var m:Double = {return self }
    
    var cm:Double = {return self / 100.0}

}

3.初始化器

扩展可向已有的类型添加新的初始化器.这允许你扩展其他类型以使初始化接收你的自定义类型作为形式参数,或提供该类型的原始实现中未包含的额外初始化选项.

扩展能为类添加新的便捷初始化器,但是不能为类添加指定初始化器或反初始化器.指定初始化器和反初始化器必须由原来类的实现提供.

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()
    
}
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)
        
        
    }
}

4.mutating方法

        var someIn = 30
        someIn.square()
extension Int
{
  mutating  func square()  {
        
        self = self * self
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值