位置:首頁 > 高級語言 > 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:
// ○ ○ ▲ ○ ○ ▲ ○ ○ ▲ ▲ ○ ○ ○ ▼ ○ ○ ○ ○ ▼ ○ ○ ▼ ○ ▼ ○