1.Extension
- 拓展可以为枚举、结构体、类、协议添加新功能
- 可以添加方法,属性,协议,下标,初始化器等
- 不能覆盖原有的功能,不能添加存储属性,不能添加父类,不能添加指定初始化器
2.计算属性例子
extension Double {
var km: Double { self * 1000.0}
var m: Double {self}
var cm: Double {self / 100.0}
}
var d = 10.0
print(d.km)
print(d.m)
print(d.cm)
3.方法例子
extension Int {
func square() -> Int {
self * self
}
}
print(5.square())
4.初始化器例子
struct Point {
var x: Int = 0
var y: Int = 0
}
extension Point {
init(point: Point) {
self.init(x: point.x,y: point.y)
}
}
var p1 = Point(x: 5, y: 10)
var p2 = Point(point: p1)
print(p2)
5.泛型例子
class Class1<E> {
var elemenets = [E]()
func push(_ e: E) {
elemenets.append(e)
}
}
extension Class1 {
func pop() -> E {
elemenets.removeLast()
}
}
6.协议例子
protocol Protocol1 {
func text1()
}
extension Protocol1 {
func text1() {
print("Protocol1 text1")
}
func text2() {
print("Protocol1 text2")
}
}
class Class2: Protocol1 {
func text1() {
print("Class2 text1")
}
func text2() {
print("Class2 text2")
}
}
var c2 = Class2()
c2.text1()
c2.text2()
var c3:Protocol1 = Class2()
c3.text1()
c3.text2()
上一篇文章:swift从入门到精通16-泛型
下一篇文章:swift从入门到精通18-访问控制和内存管理