在 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/