Skip to main content
 首页 » 操作系统

iOS Swift之减少功能

2024年01月01日40kerrycode

我在 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 调用之后。