如何在Swift中声明多维布尔数组?

我已经看到了很多不同的例子来说明如何做到这一点,但是他们中没有一个似乎显示出我真正需要的答案。 所以我知道如何声明一个types为bool的multidimensional array。

var foo:[[Bool]] = [] 

但是我不知道如何声明这种types10 x 10.每个我查找的例子只是追加到一个空集,所以我怎么初始化这个variables是一个10×10其中每个点被认为是一个布尔值?

其他答案的工作,但你可以使用Swift的generics,下标和可选项来创build一个一般types的2D数组类:

 class Array2D<T> { let columns: Int let rows: Int var array: Array<T?> init(columns: Int, rows: Int) { self.columns = columns self.rows = rows array = Array<T?>(count:rows * columns, repeatedValue: nil) } subscript(column: Int, row: Int) -> T? { get { return array[(row * columns) + column] } set(newValue) { array[(row * columns) + column] = newValue } } } 

(你也可以使这个结构,声明mutating 。)

用法:

 var boolArray = Array2D<Bool>(columns: 10, rows: 10) boolArray[4, 5] = true let foo = boolArray[4, 5] // foo is a Bool?, and needs to be unwrapped 

你也可以用这个线索做:

 var foo = Array(count:10, repeatedValue: Array(count:10, repeatedValue:false)) 

作为一个单线程,您可以使用分配的计算值进行初始化:

 var foo = (0..<10).map { _ in (0..<10).map { $0 % 2 == 0 } } 

要么

 var bar = (0..<10).map { a in (0..<10).map { b in (a + b) % 3 == 0 } } 

对于Swift 3.1:

 var foo: [[Bool]] = Array(repeating: Array(repeating: false, count: 10), count: 10) 

请参阅Swift文档