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

后端 未结 2 1976
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-12 04:12

I\'m trying to check to see if an array of arrays contains an array of Strings. My error message says:

\"Cannot find an overload for \'contains\' that accepts an arg

相关标签:
2条回答
  • 2020-12-12 04:53

    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)
    }
    
    0 讨论(0)
  • 2020-12-12 05:03

    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.

    0 讨论(0)
提交回复
热议问题