【发布时间】:2019-04-07 18:25:55
【问题描述】:
我使用 Array of Array [[Int]] 在地图中存储坐标。 例如,我想用“1”替换所有“2”。 为此,我创建了 2 个用于定义数组空间并检查内容的 for 循环。 这不是很灵活,只适用于定义大小的数组。
private func remove2fromArray(currentArray: [[Int]]) -> [[Int]] {
var newArray : [[Int]] = currentArray
for section in 0...14 {
for row in 0...19 {
if newArray[section][row] == 2
{ newArray[section][row] = 1 }
}
}
return newArray
}
有没有办法只扫描数组的内容来替换数字?
例如 currentArray.findAndReplace(find:2, replace: 1) 或类似的,适用于 [[Int]]?
【问题讨论】:
-
至少删除那些硬编码的范围。循环基于数组的实际大小。
-
为什么要使用二维数组来存储坐标?这里的模型是什么?拥有一个
Coordinate结构并存储它们的平面数组不是更好吗? -
一个数组是“一个有序的、随机访问的集合”。对我来说,这听起来不像是坐标。你最好创建一个更适合坐标的数据类型。
-
它工作得非常好,因为我可以访问数组 [section] [row],在我看来它定义了一个二维空间 - 坐标。你的意思是这样的: struct {x:Int;y:Int;value:Int} 吗? - 这将更难满足我的意见。
-
如果您能解释如何替换卡编码范围,这将有所帮助,因为我无法对数组中的数组使用计数。但我也许可以使用下面的地图功能来做到这一点。