看起来这里有2个问题。
1. 如何启用subscripting
我自己的自定义类?
subscripting
要在您的类上启用,您Container
需要subscript
像这样实现计算属性。
class Container {
private var list : [Any] = [] // I made this private
subscript(index:Int) -> Any {
get {
return list[index]
}
set(newElm) {
list.insert(newElm, atIndex: index)
}
}
}
现在你可以这样使用它了。
var container = Container()
container[0] = "Star Trek"
container[1] = "Star Trek TNG"
container[2] = "Star Trek DS9"
container[3] = "Star Trek VOY"
container[1] // "Star Trek TNG"
2. 我可以访问其中一个Container
支持下标的元素data[1][2]
吗?
如果我们使用你的例子,你不能。因为data[1]
返回类型的东西Any
。而且你不能下标Any
。
但是,如果您添加演员表,则成为可能
var container = Container()
container[0] = ["Enterprise", "Defiant", "Voyager"]
(container[0] as! [String])[2] // > "Voyager"