서브스크립트와 사용자 지정 인덱스 다시 보기
get / set 으로 서브스크립트를 정의하고 여러 매개변수(예: 2차원 행렬)를 받으며, 읽기 쉬운 API를 위해 custom index types (열거형)를 사용합니다.
서브스크립트와 사용자 지정 인덱스 다시 보기은(는) 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]) // 12get/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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 연산자 오버로딩과 우선순위 그룹
- 서브스크립트와 사용자 지정 인덱스 다시 보기
- Hashable/Equatable/Comparable 파생