所以,我在斯威夫特2以下代碼:斯威夫特任何數組不訪問結構方法
struct IntToken {
var value:Int
init(val:Int) {
self.value = val
}
mutating func add(val:IntToken) {
self.value += val.value
}
}
var table = [Any]()
table.append(IntToken(val:3))
table.append(IntToken(val:4))
table[0].add(table[1])
這給了我下面的錯誤
Playground execution failed: /var/folders/jx/bhltcyc90117d2wx_r82p4fr0000gn/T/./lldb/73237/playground71.swift:22:6: error: value of type 'Any' (aka 'protocol<>') has no member 'add'
table[0].add(table[1])
~~~~~^~~ ~~~
的問題是,我想創建一個數組,它將包含不同類型的對象,而不僅僅是IntToken
's,但我也希望能夠訪問該數組的元素並相互使用它們的方法。但是,每當我嘗試使用Any數組時,它都不允許我這樣做,因爲它將讀取訪問的結構實例作爲任何類型讀取。
什麼是一種很好的方法來完成我想要做的事情?
嘗試'枚舉令牌{case IntToken(Int); case StringToken(String)}' –
要麼你需要強制downcast每個數組元素,或者你需要有同質類型的數組 –
使用Enum你建議我得到這個錯誤: –