Swift 2D数组:行和列的相等权限

时间:2017-08-06 12:53:11

标签: arrays swift sorting storing-data

鉴于简单的2D阵列......

let grid = [[Cell]]()

...并使用Cells填充以创建10行×10列矩阵。我可以通过以下方式访问网格的第7行......

let rowSeven = grid[6]

提取所有第7列的最简单方法是什么?我知道可以通过遍历每一行并提取每行中的第七项来完成它,但我正在寻找能够以相同方式处理行和列的答案。

我特别愿意使用2D阵列的替代品,因为将来我可能想要在网格中映射和过滤单元格,而不管它们所在的行或列。

1 个答案:

答案 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结构的代码。