我想将[String]用作通用参数。
public class Cell<T : Equatable> {}
这是我收到错误的一行:
class TagsCell : Cell<[String]>, CellType {
}
我已添加此代码,但它无效
public func == (lhs: [String], rhs: [String]) -> Bool {
return lhs.count == rhs.count && (zip(lhs, rhs).contains { $0.0 != $0.1 }) == false
}
答案 0 :(得分:1)
数组不符合Swift中的Equatable
。符合Equatable
意味着此类型存在==
个运算符,但不反之。因此,即使您为==
类型实施[String]
,也无法使用Cell<[String]>
。
在您的情况下,我建议使用以下协议:
public class Cell<T : SequenceType where T.Generator.Element: Equatable> {}
class TagsCell : Cell<[String]> {
}
使用[String]
中的包装:
public class Cell<T : Equatable> {}
struct StringArray: Equatable {
var value: [String]
}
class TagsCell : Cell<StringArray> {
}
func ==(lhs: StringArray, rhs: StringArray) -> Bool {
return lhs.value == rhs.value
}