我想使用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
}发布于 2016-03-06 23:27:17
数组不符合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
}https://stackoverflow.com/questions/35832902
复制相似问题