==(_:_:)
Returns a Boolean value indicating whether two type-erased hashable instances wrap the same value.
Declaration
static func == (lhs: AnyHashable, rhs: AnyHashable) -> BoolParameters
- lhs:
A type-erased hashable value.
- rhs:
Another type-erased hashable value.
Discussion
AnyHashable considers bridged counterparts (such as a String and an NSString) of the same value to be equivalent when type-erased. If those compatible types use different definitions for equality, values that were originally distinct might compare as equal when they are converted to AnyHashable:
let string1 = "café"
let string2 = "cafe\u{301}" // U+301 COMBINING ACUTE ACCENT
let nsString1 = string1 as NSString
let nsString2 = string2 as NSString
let typeErased1 = nsString1 as AnyHashable
let typeErased2 = nsString2 as AnyHashable
print(string1 == string2) // prints "true"
print(nsString1 == nsString2) // prints "false"
print(typeErased1 == typeErased2) // prints "true"