當(dāng)一個(gè)類型已經(jīng)實(shí)現(xiàn)了協(xié)議中的所有要求,卻沒(méi)有聲明時(shí),可以通過(guò)擴(kuò)展
來(lái)補(bǔ)充協(xié)議聲明:
struct Hamster {
var name: String
func asText() -> String {
return "A hamster named \(name)"
}
}
extension Hamster: TextRepresentabl {}
從現(xiàn)在起,Hamster
的實(shí)例可以作為TextRepresentable
類型使用
let simonTheHamster = Hamster(name: "Simon")
let somethingTextRepresentable: TextRepresentabl = simonTheHamester
println(somethingTextRepresentable.asText())
// 輸出 "A hamster named Simon"
注意: 即時(shí)滿足了協(xié)議的所有要求,類型也不會(huì)自動(dòng)轉(zhuǎn)變,因此你必須為它做出明顯的協(xié)議聲明