Why can't I check to see if my array of arrays contains a specific array?

回眸只為那壹抹淺笑 提交于 2019-11-28 14:21:28

Array does not conform to the Equatable protocol, therefore

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

cannot be used here. You can use the predicate-based variant

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

instead:

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

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

because == is defined for arrays of Equatable elements.

Update for Swift2:

contains() is now a function defined in a protocol extension of Sequence therefore:

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

if !allCards.contains( { $0 == exp1 } ) {
    allCards.append(exp1)
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!