二进制运算符'+'不能应用于两个'Set <string>'操作数错误

时间:2018-04-26 08:18:52

标签: arrays swift string set

我有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'操作数

我该如何解决?

2 个答案:

答案 0 :(得分:4)

您需要使用union合并两个Set,因为+没有定义Set运算符。此外,beforeArraymynewarraySet,但由于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"]

这也适用于您的情况。