我正在尝试检查一个数组数组是否包含一个字符串数组.我的错误消息说:
“找不到’contains’的重载,它接受类型'([([(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,{ $0 == exp1 } ) { allCards.append(exp1) }
因为==是为Equatable元素的数组定义的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。