/**
* 下标的使用
*/
struct Vector3{
var x:Double = 0.0
var y:Double = 0.0
var z:Double = 0.0
//设置下标
subscript(index:Int) -> Double?{
get{
switch index{
case 0:return x
case 1:return y
case 2:return z
default:return nil
}
}
set{
guard let newValue = newValue else {return}
switch index{
case 0:x = newValue
case 1:y = newValue
case 2:z = newValue
default:return
}
}
}
}
var v = Vector3(x: 1.0, y: 2.0, z: 3.0)
v[0] = 100
struct Matrix {
var data:[[Double]]
let r:Int
let c:Int
init(row:Int,col:Int){
self.r = row
self.c = col
data = [[Double]]()
for _ in 0..<r{
let aRow = Array(count: col, repeatedValue: 0.0)
data.append(aRow)
}
}
subscript(x:Int,y:Int) -> Double{
get{
//断言
assert(x >= 0 && x < r && y >= 0 && y < c,"Index out of Range")
return data[x][y]
}
}
}