一尘不染

为什么不能检查我的数组数组是否包含特定的数组?

swift

我正在尝试检查数组数组是否包含字符串数组。我的错误消息说:

“无法为’contains’找到重载,该重载接受类型为’([([[((String)])]),[(String)])类型的参数列表

var allCards = [[String]]()
var exp1 = [String]()

if !contains(allcards, exp1) {
    allCards.append(exp1)
}

这是怎么回事!?


阅读 226

收藏
2020-07-07

共1个答案

一尘不染

Array不符合Equatable协议,因此

/// Return `true` iff `x` is in `seq`.
func contains<S : SequenceType where S.Generator.Element : Equatable>(seq: S, x: S.Generator.Element) -> Bool

不能在这里使用。您可以使用基于谓词的变体

/// Return `true` iff an element in `seq` satisfies `predicate`.
func contains<S : SequenceType, L : BooleanType>(seq: S, predicate: @noescape (S.Generator.Element) -> L) -> Bool

代替:

var allCards = [[String]]()
var exp1 = [String]()

if !contains(allCards, { $0 == exp1 } ) {
    allCards.append(exp1)
}

因为==是为Equatable元素数组定义的。

2020-07-07