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

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

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


println(game.asPrettyText())
// A game of Snakes and Ladders with 25 squares:
// ○ ○ ▲ ○ ○ ▲ ○ ○ ▲ ▲ ○ ○ ○ ▼ ○ ○ ○ ○ ▼ ○ ○ ▼ ○ ▼ ○
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务