Classes, structures, and enumerations can define subscripts, which are shortcuts for accessing the member elements of a collection, list, or sequence.
클래스, 구조체, 열거형에서 subscripts를 정의할 수 있다. subscripts를 이용해서 collection, list or sequence의 elements에 접근할 수 있다.
subscript를 정의한 인스턴스 뒤에 대괄호를 붙여서 값을 가져오거나(retrieve) 저장(set)할 수 있다.
예를 들면, Array와 Dictionary에 정의된 subscript를 이용해 Array[index], Dictionary[key]와 같이 element에 접근할 수 있다.
subscript를 여러 개 정의할 수 있고, overload도 가능하다. subscripts는 read-write 또는 read-only만 가능하다.
Their syntax is similar to both instance method syntax and computed property syntax.
subscript
키워드를 사용해서 method와 computed property와 유사하게 정의한다.
subscript(index: Int) -> Int {
get {
// Return an appropriate subscript value here.
}
set(newValue) {
// Perform a suitable setting action here.
}
}
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2
Like functions, subscripts can take a varying number of parameters and provide default values for their parameters, as discussed in Variadic Parameters and Default Parameter Values. However, unlike functions, subscripts can’t use in-out parameters.
subscript는 여러 개의 파라미터를 받을 수 있고, 파라미터에 기본 값을 줄 수도 있다. 하지만, in-out
파라미터를 사용할 수는 없다.
type 자체로 call 할 수 있는 type subscript를 정의할 수 있다. static
키워드를 붙여서 나타낼 수 있고, class의 경우에는 class
키워드를 대신 사용해서 subclass로부터 override 가능하도록 정의할 수도 있다.
enum Planet: Int {
case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
static subscript(n: Int) -> Planet {
return Planet(rawValue: n)!
}
}
let mars = Planet[4]
print(mars)
https://docs.swift.org/swift-book/LanguageGuide/Subscripts.html