서브스크립팅 구현
서브스크리븥 기법으로도 클래스, 구조체, 열거형을 모두 정의할 수 있다. 서브스크립트는 컬렉션, 리스트,
시퀸스 타입의 개별 요소에 접근을 쉽게할 수 있게 도와주며, 문법을 좀 더 간소화시킬 수 있다.
서브스크립트에서는 특정 인덱스를 지정하기 위해 설정용 메서드 또는 데이터 인출용 메서드를 별도로 사용하지
않고 set 과 get 을 사용한다.
서브스크립트 문법
서브스크립트는 하나 혹은 그 이상의 입력 파라미터를 받을 수 있다, 타입에 관계없다. 반환 값 역시 마찬가지다.
서브스크립트 정의 시 subscript 키워드를 사용하며, 읽기전용 속성으로 정의하거나, 특정 요소에 접근하기
위한 getter 또는 setter 를 설정할 수 있다.
class MovieList {
private var tracks = ["Lion King", "Avatar", "Matrix"]
subscript(index: Int) -> String {
get {
tracks[index]
}
set {
tracks[index] = newValue
}
}
}
var movieList = MovieList()
var aMovie = movieList[0]
movieList[0] = "ET"
print(movieList[0])
솔직히 말해서 거의 사용해 본이 없는 것 같다.
서브스크립트 옵션
클래스와 구조체는 필요한 만큼 많은 서브스크립트를 반환할 수 있으며, 이와 같은 다중 서브스크립트 지원 방식을 서브스크립트 오버로딩subscript overloading이라 부른다. 클래스 또는 구조체에서 필요한 서브스크립트인지 여부의 판단은 서브스크립트에 속한 개별 요소 타입에 따라 추측하게 된다.