bkw*_*ero 1 arrays contains swift
我正在尝试检查一个数组数组是否包含一个字符串数组.我的错误消息说:
"找不到'contains'的重载,它接受类型为'([([(String)])]),[(String)])''的参数列表
var allCards = [[String]]()
var exp1 = [String]()
if !contains(allcards, exp1) {
allCards.append(exp1)
}
Run Code Online (Sandbox Code Playgroud)
这是怎么回事!?
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
Run Code Online (Sandbox Code Playgroud)
不能在这里使用.您可以使用基于谓词的变体
/// Return `true` iff an element in `seq` satisfies `predicate`.
func contains<S : SequenceType, L : BooleanType>(seq: S, predicate: @noescape (S.Generator.Element) -> L) -> Bool
Run Code Online (Sandbox Code Playgroud)
代替:
var allCards = [[String]]()
var exp1 = [String]()
if !contains(allCards, { $0 == exp1 } ) {
allCards.append(exp1)
}
Run Code Online (Sandbox Code Playgroud)
因为==是为Equatable元素数组定义的.