ios – 比较集合与数组内部

在Objective-C中,您可以轻松地将包含NSArray对象的NSSet对象初始化为元素.由于isEqual:方法,您可以轻松地比较这些NSSet对象.

现在,在更强类型的Swift中,我们不能再这样做了.以下声明将收到“Type [Int]不符合协议Hashable”错误.

var set: Set<[Int]>

我现在正在尝试比较包含一堆Int数的两组数组的相等性,我想利用Swift中Set和Array的“isEqual:”思想,我该怎么办?

最佳答案 这里的问题是思考:为什么我不能用标准库做到这一点?

Set需要Hashable项,它们也必须是Equatable.这意味着做Set< Array< T>>需要检查Any Array是否与其他人相等.但如果T不是Equatable,你如何比较它们呢?不能(仍然?)声明条件扩展导致这个:(

我认为你最好的选择(不要过多地使用标准库中的扩展)也要在Swift中使用NSSet / NSArray,或者将两个部分中的至少一个(Set和Array)定义为包装器.

点赞