首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型'[String]‘不符合协议'Equatable’

类型'[String]‘不符合协议'Equatable’
EN

Stack Overflow用户
提问于 2016-03-06 21:35:35
回答 1查看 4.2K关注 0票数 1

我想使用String作为泛型参数。

代码语言:javascript
复制
public class Cell<T : Equatable> {}

下面是我得到错误的一行:

代码语言:javascript
复制
class TagsCell : Cell<[String]>, CellType {
}

我增加了这段代码,但没什么用

代码语言:javascript
复制
public func == (lhs: [String], rhs: [String]) -> Bool {
    return lhs.count == rhs.count && (zip(lhs, rhs).contains { $0.0 != $0.1 }) == false
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-06 23:27:17

数组不符合Swift中的Equatable。与Equatable一致意味着存在这种类型的==运算符,而不是相反的。因此,即使您为==类型实现了[String],也无法使用Cell<[String]>

在您的情况下,我建议使用以下协议:

代码语言:javascript
复制
public class Cell<T : SequenceType where T.Generator.Element: Equatable> {}

class TagsCell : Cell<[String]> {
}

使用[String]的包装器

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35832902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档