서브스크립트
작성일
서브스크립트
- 클래스, 구조체, 열거형에서 시컨스의 멤버 요소에 접근하기 위한 바로가기 첨자
예시
let nums: [Int] = [1, 2, 3, 4]
nums[0] // 1
nums[1] // 2
말은 어렵지만, 우리가 자주 사용하던, [] 가 서브스크립트다.
다른 예시를 보면
let dict: [String: Int] = ["one": 1, "two": 2]
dict["one"] // 1
dict["two"] // 2
이렇게 [] 안에 Key값을 넣어주고, Value에 접근하는데 이게 서브스크립트이다.
서브스크립트 정의하기
- subscript 키워드로 작성하며 하나 이상의 파라미터와 반환 값을 지정한다
- 파라미터나 리턴형을 생략할 수 없고, getter와 setter 모두 구현할 수 있다
- get-only는 가능하지만, set-only는 불가하다 (getter 생략 불가)
subscript(index: Int) -> Int {
get {
}
set(newValue) {
}
}
간단하겐 이런 것이다.
서브스크립트 사용하기
struct Stack {
var stack: [Int] = [0, 1, 2, 3, 4, 5]
subscript(index: Int) -> Int {
get {
return stack[index]
}
set {
stack[index] = newValue
}
}
}
[] 를 통해서 getter와 setter에 접근이 가능하다!
var stack: Stack = .init()
stack[0] // 서브스크립트 getter 접근
stack[1] = 2 // 서브스크립트 setter 접근