Swift中的3x3数组

时间:2016-06-05 18:20:04

标签: arrays swift

我正在尝试在Swift中创建一个3x3数组,但行数总是不同于我的预期。例如,我认为下面的代码会产生一个3x3阵列,但它实际上是9x3阵列。为什么?我怎样才能使它成为3x3?

var NumColumns = 3
var NumRows = 3
var occupied = [[Bool]](count: NumColumns, repeatedValue:[Bool](count: NumRows, repeatedValue:false));
for item in occupied {
    for item in occupied {
        print(item)
    }
}

2 个答案:

答案 0 :(得分:5)

看起来你想要一个3x3 矩阵的布尔值。

然后您可以使用Swift Programming Language作为示例提供的(略微更新的)代码。

struct Matrix {
    let rows: Int, columns: Int
    var grid: [Bool]
    init(rows: Int, columns: Int) {
        self.rows = rows
        self.columns = columns
        grid = Array(count: rows * columns, repeatedValue: false)
    }
    func indexIsValidForRow(row: Int, column: Int) -> Bool {
        return row >= 0 && row < rows && column >= 0 && column < columns
    }
    subscript(row: Int, column: Int) -> Bool {
        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: 3, columns: 3)
matrix[0, 0] = true
print(matrix[0, 0]) // true

答案 1 :(得分:4)

循环拼写错误

for item in occupied {
  for innerItem in item {
    print(innerItem) // prints 9 times
  }
}