递归地计数多维数组中的项,在通用的和惯用的Swift中



我有一个多维数组,我需要一个所有数组中所有项目的计数,不包括容器数组本身。

Swift中最通用和最习惯的解决方案是什么?我猜这将是一些功能(reduce()操作?),但不确定最好的整体方法。

明显的非功能方法是简单地遍历数组并计算项的数量。

对于最新的Swift 2.0 beta 6,您可以使用flatten()

let array = [[1, 2, 3], [4, 5], [6]]
array.flatten().count

编辑:刚刚测试了它:懒惰是不需要的,值永远不会被评估,它只是计算endIndex - startIndex的每个子集合

您可以这样做:

let array = [[1, 2, 3], [4, 5], [6]]
let countOfAll = array.map { (nested) -> Int in
    return nested.count
}.reduce(0, combine: +) // 6

对于Swift 2,你可以使用flatMap

var anArray = [[1,0,0], ["asdf","df","lef"], [0,0,1]]
var flatArray = anArray.flatMap { $0 }
print(flatArray.count) // 9

相关内容

  • 没有找到相关文章

最新更新