位置:首頁 > 高級語言 > Swift教學 > Swift在擴展中添加協議成員

Swift在擴展中添加協議成員

在擴展中添加協議成員

即便無法修改源代碼,依然可以通過擴展(Extension)來擴充已存在類型(譯者注: 類,結構體,枚舉等)。擴展可以為已存在的類型添加屬性方法下標協議等成員。詳情請在擴展章節中查看。


注意: 通過擴展為已存在的類型遵循協議時,該類型的所有實例也會隨之添加協議中的方法。
 

TextRepresentable協議含有一個asText,如下所示:

protocol TextRepresentable {
    func asText() -> String
}

通過擴展為上一節中提到的Dice類遵循TextRepresentable協議

extension Dice: TextRepresentable {
    cun asText() -> String {
        return "A \(sides)-sided dice"
    }
}

從現在起,Dice類型的實例可被當作TextRepresentable類型:

let d12 = Dice(sides: 12,generator: LinearCongruentialGenerator())
println(d12.asText())
// 輸出 "A 12-sided dice"

SnakesAndLadders類也可以通過擴展的方式來遵循協議:

extension SnakeAndLadders: TextRepresentable {
    func asText() -> String {
        return "A game of Snakes and Ladders with \(finalSquare) squares"
    }
}
println(game.asText())
// 輸出 "A game of Snakes and Ladders with 25 squares"