Subscript
클래스, 구조체 및 열거형 컬렉션, 리스트 또는 시퀀스의 멤버 요소에 액세스하기위해 사용되어 진다.
배열의 항목을 액세스하는 것처럼 '['와']' 사이에 원하는 인덱스 값을 넣으면 해당 자료형의 항목을
엑세스할 수 있다.
- 구문
subscript(index: Int) -> Int {
get {
// return an appropriate subscript value here
}
set(newValue) {
// perform a suitable setting action here
}
}
- 읽기전용일 경우 다음과 같이 get을 제외할 수 있습니다.
subscript(index: Int) -> Int {
// return an appropriate subscript value here
}
예)
1.
struct TimesTable {
let multiplier: Int
subscript(index: Int) -> Int {
return multiplier * index
}
}
let threeTimesTable = TimesTable(multiplier: 3)
println("six times three is \(threeTimesTable[6])")
// "six times three is 18"
2.
struct Matrix {
let rows: Int, columns: Int
var grid: [Double]
init(rows: Int, columns: Int) {
self.rows = rows
self.columns = columns
grid = Array(count: rows * columns, repeatedValue: 0.0)
}
func indexIsValidForRow(row: Int, column: Int) -> Bool {
return row >= 0 && row < rows && column >= 0 && column < columns
}
subscript(row: Int, column: Int) -> Double {
get {
assert(indexIsValidForRow(row, column: column), "Index out of range")
return grid[(row * columns) + column]
}
set {
assert(indexIsValidForRow(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
let someValue = matrix[2, 2]
// this triggers an assert, because [2, 2] is outside of the matrix bounds
for i in 0 ... 1 {
for j in o ... 1 {
println("[ \(i), \(j)] = \(matrix[i,j])")
}
}
'Smart Device > Swift' 카테고리의 다른 글
Swift Array #1 (0) | 2014.06.11 |
---|---|
Swift String (0) | 2014.06.11 |
Swift 연산자 (0) | 2014.06.10 |
Swift Objects and Classes #1 (0) | 2014.06.09 |
Swift 함수 #5 closure expression (0) | 2014.06.09 |