Swift基础入门知识学习(22)-类型转换(型别转换)-讲给你懂
理解难度
★★★★☆
实用程度
★★★★☆
扩展(extension)是 Swift 一个重要的特性,它可以为已存在的枚举、结构体、类别和协议添加新功能,而且不需要修改该类型原本定义的代码。扩展也可以使用在内建的类型上,像是Int、Double或String等等。
扩展允许你将方法添加到现有类型中,以使其做最初设计不做的事情。
Swift 的扩展可以:
- 新增计算属性(包含实例属性和类型属性)。
- 定义实例方法和类型方法(不能重写已存在的方法)。
- 提供新的构造器。
- 定义下标。
- 定义和使用新的嵌套类型(巢状类型)。
- 让一个已存在的类型遵循某个协议。
扩展语法
使用extension关键字来定义一个扩展,格式如下:
extension 某个类型 {
新增的代码内容
}
当你对一个已存在的类型新增一个扩展之后,扩展的新功能可以立即给该类型的所有实例使用,即使这个实例在定义扩展前就已经生成了也是可以。
另外,扩展也可以让一个已有的类型遵循一个或多个协议,格式就如同结构体及类别一样:
extension 某个类型: 协议, 另一个协议, 又另一个协议 {
新增的代码内容
}
计算属性
扩展可以对内建的类型增加计算实例属性与计算类型属性。下面例子为内建的Double类型增加了 3 个计算实例属性,用来表示常见的距离单位:
extension Double {
var km: Double {
return self * 1_000.0 }
var m: Double {
return self }
var cm: Double {
return self / 100.0 }
}
定义好新增的扩展之后,就可以直接使用,使用方法就如同普通的属性一样使用点语法再紧接着属性名称,如下: