位置:首页 > 高级语言 > 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"