Swift Academy · 강의

서브스크립트와 사용자 지정 인덱스 다시 보기

get / set 으로 서브스크립트를 정의하고 여러 매개변수(예: 2차원 행렬)를 받으며, 읽기 쉬운 API를 위해 custom index types (열거형)를 사용합니다.

레슨 2/38개 단계

서브스크립트와 사용자 지정 인덱스 다시 보기은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

서브스크립트란 무엇입니까?

서브스크립트를 사용하면 인스턴스에 배열처럼 인덱스로 접근할 수 있습니다. 다음과 같은 작업이 가능합니다.

  • 읽기 전용 또는 읽기-쓰기 접근 제공
  • 여러 매개변수 허용(예: 행/열)
  • 명확성을 위해 열거형과 같은 사용자 지정 인덱스 사용

읽기 전용 서브스크립트

서브스크립트는 set 없이 값을 반환하면 읽기 전용으로 만들 수 있습니다.

struct TimesTable {
    let multiplier: Int
    subscript(index: Int) -> Int { multiplier * index } // read-only
}
let t = TimesTable(multiplier: 3)
print(t[4]) // 12

get/set을 사용한 읽기-쓰기

읽기-쓰기 접근을 제공하려면 get/set을 추가하십시오. 충돌을 피하려면 인덱스를 검증하십시오.

struct SafeArray<T> {
    private var storage: [T]
    init(_ xs: [T]) { self.storage = xs }
    subscript(i: Int) -> T? {
        get { (0..<storage.count).contains(i) ? storage[i] : nil }
        set {
            guard let v = newValue, (0..<storage.count).contains(i) else { return }
            storage[i] = v
        }
    }
}
var s = SafeArray([10,20,30])
print(s[1] ?? -1) // 20
s[1] = 99
print(s[1] ?? -1) // 99
s[5] = 7          // ignored (out of range)

2차원 인덱싱

서브스크립트는 여러 매개변수를 받고 명확성을 위해 레이블을 사용할 수 있습니다(예: row/col).

struct Matrix {
    let rows: Int, cols: Int
    private var grid: [Int]
    init(_ r: Int, _ c: Int, fill: Int = 0) {
        rows = r; cols = c; grid = Array(repeating: fill, count: r * c)
    }
    private func valid(_ r: Int, _ c: Int) -> Bool { r >= 0 && r < rows && c >= 0 && c < cols }
    subscript(row r: Int, col c: Int) -> Int {
        get { precondition(valid(r,c), "Index out of range"); return grid[r*cols + c] }
        set { precondition(valid(r,c), "Index out of range"); grid[r*cols + c] = newValue }
    }
}
var m = Matrix(2, 3)
m[row: 0, col: 1] = 5
print(m[row: 0, col: 1]) // 5

사용자 지정 인덱스(열거형)

의도를 분명히 하려면 사용자 지정 인덱스를 사용하십시오. 열거형을 사용하면 표현력 있는 인터페이스를 유지하면서 저장 공간에 매핑할 수 있습니다.

enum Day: Int, CaseIterable { case mon = 0, tue, wed, thu, fri, sat, sun }
struct Week {
    private var tasks = Array(repeating: "—", count: Day.allCases.count)
    subscript(day: Day) -> String {
        get { tasks[day.rawValue] }
        set { tasks[day.rawValue] = newValue }
    }
}
var w = Week()
w[.wed] = "Ship"
print(w[.wed])

설계 팁

팁:

  • 요소에 접근할 때는 서브스크립트를 우선 사용하고, 동작에는 메서드를 사용하십시오.
  • 인덱스를 검증하십시오(검증/사전 조건 또는 안전한 옵셔널 사용).
  • 여러 축에 접근할 때는 매개변수 이름을 지정하십시오.
  • 서브스크립트는 빠르고 예측 가능하게 유지하십시오.

읽기-쓰기 선언

빠른 확인: 읽기-쓰기 서브스크립트를 선언하는 방법은 무엇입니까?

복습

복습: 읽기 전용 및 읽기-쓰기 서브스크립트를 만들고, 행렬처럼 여러 매개변수를 받으며, 가독성과 안전성을 위해 사용자 지정 인덱스(열거형)를 우선 사용하십시오.

무료로 시작

AI 튜터와 함께 Swift을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
122
레슨
409

자주 묻는 질문

“서브스크립트와 사용자 지정 인덱스 다시 보기” 강의는 무료인가요?

네 — “서브스크립트와 사용자 지정 인덱스 다시 보기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“서브스크립트와 사용자 지정 인덱스 다시 보기”에서 뭘 배우나요?

get / set 으로 서브스크립트를 정의하고 여러 매개변수(예: 2차원 행렬)를 받으며, 읽기 쉬운 API를 위해 custom index types (열거형)를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 2번째 강의입니다.

“서브스크립트와 사용자 지정 인덱스 다시 보기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 연산자 오버로딩과 우선순위 그룹
  2. 서브스크립트와 사용자 지정 인덱스 다시 보기
  3. Hashable/Equatable/Comparable 파생
← Swift Academy(으)로 돌아가기