下标
struct TimesTable {
let mutiplier :Int
subscript(index:Int)->Int{
return mutiplier * index
}
}
var timesTable = TimesTable(mutiplier: 3)
timesTable[2] //2*3 = 6
struct Matrix {
var rows:Int ,columns :Int
var grid:[Double]
init(row:Int,column:Int){
rows = row
columns = column
grid = Array(count: row * column, 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{
set{
assert(indexIsValidForRow(row, column: column), "Index is out or grid")
grid[(row * columns) + column] = newValue
}
get{
assert(indexIsValidForRow(row, column: column), "Index is out or grid")
return grid[(row * columns) + column]
}
}
}
var matrix = Matrix(row: 3, column: 3)
//调用subscript的set方法
matrix[1,0] = 2
matrix[0,2] = 1
print(matrix[1,0]) //2