ACo*_*lio 7 macos multidimensional-array ios swift
我已经看到了很多关于如何做到这一点的不同例子,但它们似乎都没有显示出我真正需要的答案.所以我知道如何声明bool类型的多维数组.
var foo:[[Bool]] = []
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚如何声明10 x 10的类型.我查找的每个示例只是附加到空集,所以如何将此变量初始化为10x10,其中每个点都被视为布尔值?
其他答案可行,但您可以使用Swift泛型,下标和选项来制作通用类型的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
}
}
}
Run Code Online (Sandbox Code Playgroud)
(你也可以把它作为一个结构,声明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
Run Code Online (Sandbox Code Playgroud)
你也可以用这个oneliner来做到这一点:
var foo = Array(repeating: Array(repeating: false, count: 10), count: 10)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3141 次 |
| 最近记录: |