发布于 2015-06-14 01:45:31 | 67 次阅读 | 评论: 0 | 来源: 网络整理
当一个类型已经实现了协议中的所有要求,却没有声明时,可以通过扩展
来补充协议声明:
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"
注意: 即时满足了协议的所有要求,类型也不会自动转变,因此你必须为它做出明显的协议声明