Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Xcode
- MVVM
- UITextView
- 리펙토링
- Protocol
- collectionview
- swiftUI
- 리팩토링
- ribs
- 리펙터링
- 애니메이션
- Observable
- swift documentation
- UICollectionView
- HIG
- rxswift
- 클린 코드
- uiscrollview
- SWIFT
- Human interface guide
- uitableview
- combine
- ios
- 스위프트
- clean architecture
- tableView
- Refactoring
- map
- Clean Code
- RxCocoa
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift 공식 문서] 12. Subscripts 본문
Subscripts
- 배열에서의 Random Access하기 위해 index값을 사용하는데, 이때 인덱스 값이 'Subscripts'
- ex) arr[3] = 1
- swift에서는 class, struct, enum의 []연산자를 subscript 키워드를 통해 정의 가능
swift의 subscript 키워드
- swift는 subscript를 정의하여 sequence가 아니더라도 특정 연산이 되게끔 가능
struct TimeTable {
let multiplier: Int
subscript(index: Int) -> Int {
return multiplier * index
}
}
let threeTimeTable = TimeTable(multiplier: 3)
print(threeTimeTable[5]) // 15
- subscript는 computed property
subscript(index: Int) -> Int {
get {
}
set(newValue) {
}
}
Subscript 사용처
- 일반적으로 sequence의 요소에 접근하기 위해 subscript를 사용하지만, swift에서는 사용에 따라 기능 다른점이 존재
- Dictionary
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2
Subscript 옵션
- 여러개의 매개 변수 사용 가능
- arr[1, 2]
- in-out 사용 불가
- 매개변수에 default 값 사용 가능
ex) 1차원 배열을 subscript를 이용하여 2차원 배열처럼 사용
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)
}
func indexIsValid(row: Int, column: Int) -> Bool {
return row >= 0 && row < rows && column >= 0 && column < columns
}
subscript(row: Int, column: Int) -> Double {
get {
assert(indexIsValid(row: row, column: column), "Index out of range")
return grid[(row * columns) + column]
}
set {
assert(indexIsValid(row: row, column: column), "Index out of range")
grid[(row * columns) + column] = newValue
}
}
}
var matrix = Matrix(rows: 2, columns: 2)
matrix[0, 1] = 1.5
matrix[1, 0] = 3.2
static subcript
- static을 생략하면 instance subscript
- class subscrip도 존재
ex) enum에서 static subscript을 사용하여 접근
enum Planet: Int {
case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
static subscript(n: Int) -> Planet {
return Planet(rawValue: n)!
}
}
let mars = Planet[4]
print(mars) // mars
* 참고
https://docs.swift.org/swift-book/LanguageGuide/Subscripts.html
'swift 공식 문서' 카테고리의 다른 글
[iOS - swift 공식 문서] 14. Deinitialization (인스턴스 해제 초기화) (0) | 2021.07.11 |
---|---|
[iOS - swift 공식 문서] 13. Inheritance (상속) (0) | 2021.07.05 |
[iOS - swift 공식 문서] 11. Methods (메서드) (0) | 2021.06.29 |
[iOS - swift 공식 문서] 10. Properties (프로퍼티) (0) | 2021.06.26 |
[iOS - swift 공식 문서] 9. Structures and Classes (0) | 2021.06.25 |
Comments