在swift 3.0 Xcode beta 3中,我定義了一個相當簡單的協議和兩個實現它的結構,如果我在創建對象時初始化數組,它會起作用,但如果我嘗試添加元素我收到一個錯誤:Swift Protocol Arrays添加與實例化
Cannot convert value of type '[H]' to expected argument type 'inout _'
不應該這樣做嗎?
protocol H {
var v : Int { get set }
func hello()
}
struct J : H {
var v : Int
func hello() {
print("j")
}
}
struct K : H {
var v : Int
func hello() {
print("k")
}
}
let ag:[H] = [K(v:3), J(v:4)] // works
ag[0].hello()
ag[1].hello()
var af:[H] = []
af += [K(v:3)] // does not work
af += [J(v:4)] // does not work
af[0].hello()
af[1].hello()
'變種AF:[H] = []'是更好的寫法如下:'變種AF = [H]() ' – Alexander