I am beginner with the Swift
having no advance knowledge with operators.
I have the following class
class Container {
var list: [Any] = [];
}
I want to implement the operator subscript []
in order to access the data from list
.
I need something like this:
var data: Container = Container()
var value = data[5]
// also
data[5] = 5
Also I want to be able to write something like this:
data[1][2]
Is it possible considering that element 1
from Container
is an array
?
Thanx for help.
It looks like there are 2 questions here.
subscripting
on my own custom class?To enable subscripting
on your class Container
you need to implement the subscript
computed property like this.
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)
}
}
}
Now you can use it this way.
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"
Container
that supports subscripting writing something like data[1][2]
?If we use your example no, you cannot. Because data[1]
returns something of type Any
. And you cannot subscript Any
.
But if you add a cast it becomes possible
var container = Container()
container[0] = ["Enterprise", "Defiant", "Voyager"]
(container[0] as! [String])[2] // > "Voyager"