我得到這個協議和實現它的結構。這個例子中的「擴展集合Iterator.Element:Textrepresentable」是什麼?
protocol TextRepresentable {
var textualDescription: String { get }
}
struct Hamster: Textrepresentable {
var name: String
var textualDescription: String {
return "A hamster named \(name)"
}
}
下面的代碼如何工作?
extension Collection where Iterator.Element: TextRepresentable {
var textualDescription: String {
let itemsAsText = self.map { $0.textualDescription }
return "[" + itemsAsText.joined(separator: ", ") + "]"
}
}
什麼是擴展集合在下面執行此代碼?
let murrayTheHamster = Hamster(name: "Murray")
let morganTheHamster = Hamster(name: "Morgan")
let mauriceTheHamster = Hamster(name: "Maurice")
let hamsters = [murrayTheHamster, morganTheHamster, mauriceTheHamster]
print(hamsters.textualDescription)
順便說一句,Swift標準庫已經有協議來模擬這個功能('CustomStringConvertible'和'CustomDebugStringConvertible') – Alexander
@Alexander我不知道這個我親愛的,我只是想了解事情是如何工作的迅速,下面的答案已經結束了我的困惑。 :) –