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
电话之后。
我在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
电话之后。