Subscript는 Swift에 있는 새로운 문법이다. 값 접근에 있어서 의미있는 접근 방법을 정의하여 사용할 수 있다. 예를 들어 행렬이 있을 수 있다. 행렬이라는 자료구조를 만들고, 실제 2차원 배열에 접근하는 것처럼 접근하기 위해 접근 방법을 customizing하는 것이라 생각하면 되겠다.

Subscript

  • class, struct, enum에 추가 가능
  • 간단한 방법으로 member element에 접근할 수 있는 방법
  • 하나의 type에 여러개의 subscript 사용 가능
  • subscript 하나에 여러개의 parameter 사용 가능
  • 예시
    struct Matrix {
        let rows: Int, columns: Int
        var grid: [Double]
     
        init(rows: Int, columns: Int) {
            self.rows = rows
            self.columns = columns
            self.grid = Array(repeating: 0.0, count: rows * columns)
        }
     
        func indexIsValid(row: Int, column: Int) -> Bool {
            return row >= 0 && row < rows && column >= 0 && column < columns
        }
     
        subscript(row: Int, column: Int) -> Double {
            get {
                assert(self.indexIsValid(row: row, column: column), "Index out of range")
                return grid[(row * self.columns) + column]
            }
            set {
                assert(self.indexIsValid(row: row, column: column), "Index out of range")
                grid[(row * self.columns) + column] = newValue
            }
        }
    }
     
    var A = Matrix(rows: 3, columns: 4)
    print(A[2, 3]) // 0.0