【发布时间】:2018-08-05 21:47:27
【问题描述】:
我有以下代码:
(0...engine.rows-1).forEach {row in
(0...engine.cols-1).forEach {col in
//print("(\(row),\(col)) state = \(engine.grid[(row,col)])")
switch engine.grid[(row,col)] {
case CellState.empty: emptyCount = emptyCount + 1
case CellState.alive: aliveCount = aliveCount + 1
case CellState.died: diedCount = diedCount + 1
case CellState.born: bornCount = bornCount + 1
}
}
}
看起来过滤器可以更有效地执行此操作,但我不了解复杂对象的语法。如果没有过滤器,有没有更好的方法在 swift 中执行嵌套循环?
谢谢
【问题讨论】:
-
你想做什么?
-
(0...engine.rows-1)最好写成(0..<engine.rows) -
什么是
engine?它显然不是标准的 Swift 结构。引擎是否提供了一种获取所有单元格或单元格枚举器的方法?嵌套循环有什么问题?它们是一种经过时间验证的二维结构行走方式。 -
我认为可能有一种方法可以使用过滤器,但听起来好像没有。
-
很抱歉没有回答前两个问题。我正在尝试计算网格中每个单元格状态的计数,这实际上是具有某些属性的数组。我知道过滤器可以生成一个符合特定条件的数组。我想我可以做到这一点并使用结果过滤器的计数。感谢您指出表示范围的更好方法。