发布于 2015-06-14 01:49:33 | 205 次阅读 | 评论: 0 | 来源: 网络整理
协议能够继承一到多个其他协议。语法与类的继承相似,多个协议间用逗号,
分隔
protocol InheritingProtocol: SomeProtocol, AnotherProtocol {
// 协议定义
}
如下所示,PrettyTextRepresentable
协议继承了TextRepresentable
协议
protocol PrettyTextRepresentable: TextRepresentable {
func asPrettyText() -> String
}
遵循``PrettyTextRepresentable
协议的同时,也需要遵循
TextRepresentable`协议。
如下所示,用扩展
为SnakesAndLadders
遵循PrettyTextRepresentable
协议:
extension SnakesAndLadders: PrettyTextRepresentable {
func asPrettyText() -> String {
var output = asText() + ":n"
for index in 1...finalSquare {
switch board[index] {
case let ladder where ladder > 0:
output += "▲ "
case let snake where snake < 0:
output += "▼ "
default:
output += "○ "
}
}
return output
}
}
在for in
中迭代出了board
数组中的每一个元素:
▲
表示▼
表示○
表示任意SankesAndLadders
的实例都可以使用asPrettyText()
方法。
println(game.asPrettyText())
// A game of Snakes and Ladders with 25 squares:
// ○ ○ ▲ ○ ○ ▲ ○ ○ ▲ ▲ ○ ○ ○ ▼ ○ ○ ○ ○ ▼ ○ ○ ▼ ○ ▼ ○