位置:首页 > 高级语言 > Swift在线教程 > Swift协议的继承

Swift协议的继承

协议的继承

协议能够继承一到多个其他协议。语法与类的继承相似,多个协议间用逗号,分隔

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数组中的每一个元素:

  • 当从数组中迭代出的元素的值大于0时,用表示
  • 当从数组中迭代出的元素的值小于0时,用表示
  • 当从数组中迭代出的元素的值等于0时,用表示

任意SankesAndLadders的实例都可以使用asPrettyText()方法。

println(game.asPrettyText())
// A game of Snakes and Ladders with 25 squares:
// ○ ○ ▲ ○ ○ ▲ ○ ○ ▲ ▲ ○ ○ ○ ▼ ○ ○ ○ ○ ▼ ○ ○ ▼ ○ ▼ ○