Swift通过扩展补充协议声明
通过扩展补充协议声明
当一个类型已经实现了协议中的所有要求,却没有声明时,可以通过扩展
来补充协议声明:
struct Hamster {
var name: String
func asText() -> String {
return "A hamster named \(name)"
}
}
extension Hamster: TextRepresentabl {}
从现在起,Hamster
的实例可以作为TextRepresentable
类型使用
let simonTheHamster = Hamster(name: "Simon")
let somethingTextRepresentable: TextRepresentabl = simonTheHamester
println(somethingTextRepresentable.asText())
// 输出 "A hamster named Simon"
注意: 即时满足了协议的所有要求,类型也不会自动转变,因此你必须为它做出明显的协议声明