我有2个数组,我想在将它们转换为集合后合并它们,这是我的代码:
var before = Array(Set(beforevalues))
var first = Array(Set(myvalues))
let save1 = first{ ($0.rangeOfString("today") != nil) }
let save2 = Set(save1)
var mynewarray = Set(save2)
let merge = Array(Set(before + mynewarray)) // THIS LINE ERROR
但它给出了:
二元运算符'+'不能应用于两个'Set'操作数
我该如何解决?
答案 0 :(得分:4)
您需要使用union
合并两个Set
,因为+
没有定义Set
运算符。此外,before
是Array
而mynewarray
是Set
,但由于Set.union
接受Sequence
类型的输入参数,您可以解决该问题通过在union
上调用Set
来解决问题。
let merged = Array(mynewarray.union(before))
答案 1 :(得分:4)
虽然我同意Dávid Pásztor's answer,但我会提到您可以覆盖集合的加号运算符+
以使其执行所需的功能(联合):
extension Set {
static func +(lhs: Set, rhs: Set) -> Set {
return lhs.union(rhs)
}
}
因此,您将能够:
var first = Set(["hi", "greeting", "hello"])
var second = Set(["greeting", "hello", "hello", "hey"])
let merged = Array(Set(first + second)) // ["hi", "hey", "greeting", "hello"]
这也适用于您的情况。