Subscript Implementation in Swift

From the Swift cheat sheet · Subscripts · verified Jul 2026

Subscript Implementation

Adding subscript access to custom types

swift
// Basic subscript
struct Matrix {
    let rows: Int, columns: Int
    var grid: [Double]

    init(rows: Int, columns: Int) {
        self.rows = rows
        self.columns = columns
        grid = Array(repeating: 0.0, count: rows * columns)
    }

    subscript(row: Int, column: Int) -> Double {
        get {
            return grid[(row * columns) + column]
        }
        set {
            grid[(row * columns) + column] = newValue
        }
    }
}

var matrix = Matrix(rows: 2, columns: 2)
matrix[0, 0] = 1.0
matrix[1, 1] = 2.0

// Read-only subscript
struct DaysOfWeek {
    let days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]

    subscript(index: Int) -> String {
        return days[index % 7]
    }
}
💡 Subscripts can have multiple parameters
⚡ Use subscripts for natural index-based access
📌 Type subscripts use static keyword
🟢 Subscripts can be generic and have default parameters
Back to the full Swift cheat sheet