서브스크립트

작성일

서브스크립트

  • 클래스, 구조체, 열거형에서 시컨스의 멤버 요소에 접근하기 위한 바로가기 첨자

예시

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 접근