鉴于简单的2D阵列......
let grid = [[Cell]]()
...并使用Cells
填充以创建10行×10列矩阵。我可以通过以下方式访问网格的第7行......
let rowSeven = grid[6]
提取所有第7列的最简单方法是什么?我知道可以通过遍历每一行并提取每行中的第七项来完成它,但我正在寻找能够以相同方式处理行和列的答案。
我特别愿意使用2D阵列的替代品,因为将来我可能想要在网格中映射和过滤单元格,而不管它们所在的行或列。
答案 0 :(得分:0)
我认为你应该创建自己的类型(struct)来呈现你正在寻找的界面。然后,您可以根据需要实现结构,并根据需要进行更改,而无需更改使用结构的代码。我希望有一个界面:
struct Grid<T> {
func at(x: Int, y: Int) -> T
func at(x: Int) -> [T]
func at(y: Int) -> [T]
// add setters as necessary.
}
您可以使用2D数组实现上述操作,就像您已经在行主要或列主要,或作为一维数组,或作为稀疏数组(即,键是x,y元组和字符串的字典)值是T.
更重要的是,您可以测试每个想法的效果,并使用最适合您情况的,而无需更改使用Grid结构的代码。