16.3 扩展中声明协议
我们在16.1节介绍了扩展,在扩展中也可以声明遵守某个协议,语法如下所示:
extension 类型名 : 协议1, 协议2 {// 协议内容}
下面我们看看示例代码:
protocol Editable { ①mutating func edit()}struct Account { ②var amount : Double = 10.0 //账户金额var owner : String = "" //账户名}extension Account : Editable { ③mutating func edit() { ④self.amount *= 100self.owner = "Tony"}}var account = Account() ⑤account.edit() ⑥println("\(account.owner) - \(account.amount)") ⑦
上述代码第①行定义了Editable协议,第②行代码定义了Account结构体,第③行定义了Account结构体扩展,同时声明遵守Editable协议。第④行定义的方法是实现Editable协议中规定的方法,在方法中修改属性amount和owner。
第⑤行代码是创建Account实例,第⑥行是调用edit方法修改属性,最后代码第⑦行是打印修改之后的属性值。
