kennyc
(Kenny Carruthers)
1
When Swift synthesizes Equatable conformance for an Array property, does it perform some sort of "fast-check" to see if the underlying storage of the array is the same or does it always perform an equality test on each element in the arrays?
let founders = ["Alice", "Dave", "Jane", "John"]
struct Organization: Equatable {
let name:String
let members:[String]
}
let org1 = Organization(name:"Org 1", members:founders)
let org2 = Organization(name:"Org 2", members:founders)
// Does this equality test check every element in `members`?
if org1 == org2 {
// ...
}
Bonus question: Where in the Swift codebase would I look to see how something like synthesized Equatable conformance is implemented for array properties?
Nevin
2
It does a fast check:
let x = Double.nan
var a = [x]
var b = a
a[0] == b[0] // false
a == b // true
a[0] = b[0]
a == b // false
3 Likes
Lantua
3
It’s definitely somewhere in GitHub - apple/swift: The Swift Programming Language.
Maybe you can start here:
1 Like