iOS Swift - 缩减函数

iOS Swift - Reduce function

我在SWIFT中有一段代码我不明白:

var peers: [String:NSSet] = [:]
for s in squares {
  var ps = reduce(units[s]!, NSMutableSet()) { set, u in
    set.addObjectsFromArray(u)
    return set
  }
  ps.removeObject(s)
  peers[s] = ps
}

squares是一个字符串数组。

到目前为止我已经意识到 peers 可能是一个 key/value 数据结构,其键为 String,值为 NSSet。 NSSet 类似于 Array,但它不能接受重复项。我不明白的主要部分实际上是 reduce 功能。任何解释或指导性 article/webpage 表示赞赏。

var ps = reduce(units[s]!, NSMutableSet()) { set, u in
    set.addObjectsFromArray(u)
    return set
  }

Reduce 将第一个参数(units[s] 应该是一个数组)中的数组元素合并到第二个参数(这里是 NSMutableSet)。下面大括号中的代码说明了如何组合这些元素。 "set" 和 "u" 指的是单位 [s] 和 NSMutable 集。所以它以 units[s] 为单位获取每个元素并将它们添加到 NSMutableSet.

reduce 是一种方法,用于使用您提供的运算符将数组缩减为单个值以构造最终结果。教程中的大多数演示都使用 +* 将数字数组缩减为单个加法或乘法结果。

您使用的方法采用输入数组 units[s] 和初始值 NSMutableSet()(空集),然后按顺序将闭包应用于每个元素。

您的代码似乎表明 units[s] 的元素又是数组;所以你的数据可能看起来像这样:

units[s]: [
            [1, 2, 3, 4],
            [5, 6, 7, 8],
            [1, 3, 5, 7]
          ]

使 ps 成为:

ps: [ 1, 2, 3, 4, 5, 6, 7, 8 ]

在你的 reduce 电话之后。