我在 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 可能是一个键/值数据结构,键为 String,值为 NSSet。 NSSet 类似于 Array,但它不能接受重复项。我不明白的主要部分实际上是 reduce 函数。任何解释或指导性文章/网页表示赞赏。
请您参考如下方法:
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 调用之后。
