给定简单的二维数组...
let grid = [[Cell]]()
...并填充 Cells
以创建 10 行 x 10 列矩阵。我可以通过以下方式访问网格的第 7 行...
let rowSeven = grid[6]
提取第 7 列全部内容的最简单方法是什么?我知道可以通过循环遍历每一行并提取每行中的第七个项目来完成,但我正在寻找一个可以以相同方式处理行和列的答案。
我特别愿意接受使用二维数组的替代方案的想法,因为将来我可能希望独立于网格中的行或列来映射和过滤单元格。
最佳答案
我认为您应该创建自己的类型(结构)来呈现您正在寻找的界面。然后,您可以根据需要实现该结构并更改它以满足您的需求,而无需更改使用该结构的代码。我期望这样的界面:
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。
更重要的是,您可以测试每种想法的性能,并使用最适合您情况的想法,而无需更改使用网格结构的代码。
关于arrays - Swift 二维数组 : Equal rights for rows and columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532241/