import UIKit
//subscript 快速存取實體的資料
/*語法:
subscript(index:Int) -> Int{
get{
return Int;
}
set(newValue){
}
}
*/
struct TimesTable{
let multiplier:Int;
subscript(index:Int) -> Int{
//只有get時,可以省略get語法
return index * multiplier;
}
}
let threeTimesTable = TimesTable(multiplier: 3);
print("6次的3是:\(threeTimesTable[6])");
var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4];
//如果沒指定的key,就是新增
numberOfLegs["bird"] = 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: 3)
matrix[1,2] = 50.0
matrix[1,1] = 40.0
matrix[0,0] = 10.0
print(matrix.grid)
//print(matrix[20,20])
print(matrix[1,2]);
print(matrix[1,1]);
print(matrix[0,0]);