5
我试图创建一个集从数组中使元素唯一。 我认为这将是一个优雅的方法来使用Set初始值设定器来完成这项工作。所以我创建了一个数组,并尝试使用该数组初始化我的新集合。 但编译器在抱怨。我使用整数值来尝试它,它像一个魅力。但是用我自己的课,它不起作用。我也认为Equatable Protocol
是正确的路要走..但如你所见,它不能解决我的问题。在Swift中创建一个数组集
考虑以下游乐场:
import UIKit
internal struct Object: Equatable {
var a: Int
}
internal func == (lhs:Object,rhs: Object) -> Bool {
return lhs.a == rhs.a
}
let array = [Object(a:1),Object(a:1),Object(a:1),Object(a:1),Object(a:2)]
let set = Set(array) // ERROR
编译器与抱怨
不能调用初始化设置< _>类型的自变量[对象]
哪个协议我是否需要实施以使事情发挥作用?
'Object'必须符合'Hashable',不只是'Equatable'。 –
可能的重复[减少数组在Swift中设置](http://stackoverflow.com/questions/34161786/reduce-array-to-set-in-swift) – EmilioPelaez
它不是重复的,我明确地询问我需要实现的一种协议。引用的Thread没有提到关于Hashable协议的内容,并且包含使用reduce的构造,这可能导致开发人员陷入错误的解决方案。这篇文章更精确,不应该被标记为重复,以帮助其他堆栈溢出用户更快找到问题的解决方案。 –