【发布时间】:2018-05-29 18:56:33
【问题描述】:
这是对苹果官方文档中提供的下标选项示例的修改。
所以,我创建了一个结构 -
struct Matrix {
let rows: Int, columns: Int
var print: [Double]
init(rows: Int, columns: Int) {
self.rows = rows
self.columns = columns
print = Array(repeating:0.0, count:rows * columns)
}
subscript(row: Int, column: Int) -> Double {
get {
return print[(row * columns) ]
}
set {
print[(row * columns) ] = newValue
}
}
}
然后我创建了实例 -
var mat = Matrix(rows: 3, columns: 3)
现在,如果我只是设置值 -
mat[0,0] = 1.0
并打印 -
print("\(mat[0,0])") //1.0
它打印出 1.0,应该是这样的
但是当我在上面进行更改并按如下方式设置和打印值时 -
mat[0,0] = 1.0
mat[0,1] = 2.0
现在如果我打印
print("\(mat[0,0])") // 2.0
现在,我的问题是,为什么它[0,0] 变成了 2.0,虽然我没有改变它。
【问题讨论】:
-
你弄错了索引。这是
(row * columns) + column。在您的代码中,row值为0的任何位置都将在零索引中进行评估。