我有一個名爲Foo
的協議和一個名爲Bar
的結構。 Bar
符合Foo
。追加到Swift中的泛型數組
protocol Foo {}
struct Bar: Foo {}
追加一個Bar
實例的Bar
作品數組作爲預期。
var array = [Bar]()
array.append(Bar())
現在,我有一個通用的結構稱爲Baz
一個與符合Foo
(例如Bar
)類型初始化。
struct Baz<T: Foo> {
private(set) var array = [T]()
init() {
if T.self is Bar.Type {
// Error: Cannot invoke 'append' with an argument list of type (Bar)
array.append(Bar())
}
}
}
試圖追加到以下錯誤數組結果:
Cannot invoke 'append' with an argument list of type (Bar)
爲什麼不這項工作預計 ?
順便說一句,使用的情況是這樣的:
3210
可能類似'array.append(Bar()as T)'? – njzk2
是的,鑄造到T固定它。不知何故,這個解決方案完全暗示了我哈哈。謝謝! – JWK