Protocols - 完成协议的继承
This commit is contained in:
@ -534,7 +534,7 @@ for thing in things {
|
|||||||
<a name="protocol_inheritance"></a>
|
<a name="protocol_inheritance"></a>
|
||||||
## 协议的继承
|
## 协议的继承
|
||||||
|
|
||||||
协议能够继承一到多个其他协议。语法与类的继承相似,多个协议间用逗号`,`分隔
|
协议能够继承一个或多个其他协议,可以在继承的协议基础上增加新的内容要求。协议的继承语法与类的继承相似,多个被继承的协议间用逗号分隔:
|
||||||
|
|
||||||
```swift
|
```swift
|
||||||
protocol InheritingProtocol: SomeProtocol, AnotherProtocol {
|
protocol InheritingProtocol: SomeProtocol, AnotherProtocol {
|
||||||
@ -550,9 +550,9 @@ protocol PrettyTextRepresentable: TextRepresentable {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
遵循`PrettyTextRepresentable`协议的同时,也需要遵循`TextRepresentable`协议。
|
例子中定义了一个新的协议`PrettyTextRepresentable`,它继承自`TextRepresentable`协议。任何遵循`PrettyTextRepresentable`协议的类型在满足该协议的要求时,也必须满足`TextRepresentable`协议的要求。在这个例子中,`PrettyTextRepresentable`协议要求其遵循者提供一个返回值为`String`类型的`asPrettyText`方法。
|
||||||
|
|
||||||
如下所示,用`扩展`为`SnakesAndLadders`遵循`PrettyTextRepresentable`协议:
|
如下所示,扩展`SnakesAndLadders`,让其遵循`PrettyTextRepresentable`协议:
|
||||||
|
|
||||||
```swift
|
```swift
|
||||||
extension SnakesAndLadders: PrettyTextRepresentable {
|
extension SnakesAndLadders: PrettyTextRepresentable {
|
||||||
@ -573,11 +573,11 @@ extension SnakesAndLadders: PrettyTextRepresentable {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
在`for in`中迭代出了`board`数组中的每一个元素:
|
上述扩展使得`SnakesAndLadders`遵循了`PrettyTextRepresentable`协议,并为每个`SnakesAndLadders`类型提供了了协议要求的`asPrettyText()`方法。每个`PrettyTextRepresentable`类型同时也是`TextRepresentable`类型,所以在`asPrettyText`的实现中,可以调用`asText()`方法。之后在每一行加上换行符,作为输出的开始。然后遍历数组中的元素,输出一个几何图形来表示遍历的结果:
|
||||||
|
|
||||||
* 当从数组中迭代出的元素的值大于0时,用`▲`表示
|
* 当从数组中取出的元素的值大于0时,用`▲`表示
|
||||||
* 当从数组中迭代出的元素的值小于0时,用`▼`表示
|
* 当从数组中取出的元素的值小于0时,用`▼`表示
|
||||||
* 当从数组中迭代出的元素的值等于0时,用`○`表示
|
* 当从数组中取出的元素的值等于0时,用`○`表示
|
||||||
|
|
||||||
任意`SankesAndLadders`的实例都可以使用`asPrettyText()`方法。
|
任意`SankesAndLadders`的实例都可以使用`asPrettyText()`方法。
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user