arrays - swift:扩展数组的可比性

标签 arrays swift swift4.2

在 swift 中,4 数组是自动比较的 - 但它们按顺序检查每个元素。元素 1 是否匹配元素 1,元素 2 是否匹配元素 2,等等? - 这可能是良好的标准行为。

但我想扩展/更改特定类型 Interval 的此行为,因此元素的顺序并不重要,只要两个数组的内容匹配即可。即,如果两个数组都已排序并匹配(使用原始行为),那么应该触发可比较。

问题是,通过定义我的新行为,我“覆盖”并丢失了现有行为(我希望理想地保留它,以便在两个数组排序后我可以进行测试) - 所以我收到警告“全部”通过此函数的路径将调用其自身'。任何想法如何解决请

extension Array where Element == Interval {
    static func == (lhs: [Interval], rhs: [Interval]) -> Bool {
        return lhs.sorted() == rhs.sorted()
    }
}

最佳答案

首先让Interval符合Hashable。现在,您可以将数组强制转换为 Sets 并比较是否相等,而无需考虑顺序。

关于arrays - swift:扩展数组的可比性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53093505/

相关文章:

C语言改变数组中元素的值

ios - 分段控制容器 View 和 UITableViews

Swift tabbar 将选择器添加到 tabItem

ios - Swift 不直接从其他 View Controller 推断枚举类型

swift - 使用 @dynamicMemberLookup 访问 AnyCodable 值

ios - 我可以在 MacBook 上的哪里找到 iOS 应用程序可执行 .ipa 文件以共享到 mdm 进行分发?

arrays - 如何在 for 循环中跟踪打印项目?

python - 如何从 json 数据创建 DataFrame - 数组中的字典、列表和数组

javascript - 在具有两个元素的数组中查找正点元素javascript

swift - 新的Xcode8扩展开发流程