Swift 协议(protocol)和扩展(extension)
协议
Swift 使用protocol
定义协议:
1 protocol ExampleProtocol {
2 var simpleDescription: String { get }
3 mutating func adjust ()
4 }
类型、枚举和结构都可以实现(adopt)协议:
1 class SimpleClass: ExampleProtocol {
2 var simpleDescription: String = "A very simple class." var anotherProperty: Int = 69105
3 func adjust () {
4 simpleDescription += " Now 100% adjusted."
5 }
6 }
7 var a = SimpleClass ()
8 a.adjust ()
9 let aDescription = a.simpleDescription
10
11 struct SimpleStructure: ExampleProtocol {
12 var simpleDescription: String = "A simple structure"
13 mutating func adjust () {
14 simpleDescription += " (adjusted)"
15 }
16 }
17 var b = SimpleStructure ()
18 b.adjust ()
19 let bDescription = b.simpleDescription
扩展
扩展用于在已有的类型上增加新的功能(比如新的方法或属性),Swift 使用extension
声明扩展:
1 extension Int: ExampleProtocol {
2 var simpleDescription: String {
3 return "The number \(self)"
4 }
5 mutating func adjust () {
6 self += 42
7 }
8 }
9 7.simpleDescription