2 回答

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
編輯:如更新的問題中所述,自Swift 4.1起,現(xiàn)在可以實(shí)現(xiàn)
目前在Swift中(從Xcode 7.1開始)無法實(shí)現(xiàn)。如錯(cuò)誤所示,您不能將協(xié)議一致性(“繼承子句”)限制為類型受限的擴(kuò)展。也許有一天。我不認(rèn)為沒有任何可能的深層原因,但是目前尚未實(shí)現(xiàn)。
您可以獲得的最接近的結(jié)果是創(chuàng)建一個(gè)包裝器類型,例如:
struct FriendlyArray<Element: Friendly>: Friendly {
let array: [Element]
init(_ array: [Element]) {
self.array = array
}
func sayHi() {
for elem in array {
elem.sayHi()
}
}
}
let friendly: Friendly = FriendlyArray(["Foo", "Bar"])
(您可能想擴(kuò)展FriendlyArray為一個(gè)CollectionType。)
有關(guān)我自己陷入嘗試進(jìn)行這項(xiàng)工作的瘋狂以及我從邊緣爬回的故事,請(qǐng)參閱NSData,我的老朋友。
- 2 回答
- 0 關(guān)注
- 615 瀏覽
添加回答
舉報(bào)