为什么我不能检查我的数组数组是否包含特定数组?
Why can't I check to see if my array of arrays contains a specific array?
我正在尝试检查一个数组数组是否包含一个字符串数组。我的错误信息是:
"Cannot find an overload for 'contains' that accepts an argument list of type '([([(String)])]), [(String)])'"
var allCards = [[String]]()
var exp1 = [String]()
if !contains(allcards, exp1) {
allCards.append(exp1)
}
怎么回事!?
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, { [=12=] == exp1 } ) {
allCards.append(exp1)
}
因为 ==
是为 Equatable
个元素的数组定义的。
Swift2
更新:
contains()
现在是 Sequence
协议扩展中定义的函数,因此:
var allCards = [[String]]()
var exp1 = [String]()
if !allCards.contains( { [=10=] == exp1 } ) {
allCards.append(exp1)
}
我正在尝试检查一个数组数组是否包含一个字符串数组。我的错误信息是:
"Cannot find an overload for 'contains' that accepts an argument list of type '([([(String)])]), [(String)])'"
var allCards = [[String]]()
var exp1 = [String]()
if !contains(allcards, exp1) {
allCards.append(exp1)
}
怎么回事!?
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, { [=12=] == exp1 } ) {
allCards.append(exp1)
}
因为 ==
是为 Equatable
个元素的数组定义的。
Swift2
更新:
contains()
现在是 Sequence
协议扩展中定义的函数,因此:
var allCards = [[String]]()
var exp1 = [String]()
if !allCards.contains( { [=10=] == exp1 } ) {
allCards.append(exp1)
}