[swift-evolution] [Draft] Automatically deriving Equatable
Jan E. Schotsman
jeschot at xs4all.nl
Wed May 25 16:02:47 CDT 2016
On May 25, 2016, at 9:04 PM, Tony Allevato wrote:
> I was inspired to put together a draft proposal based on an older
> discussion in the Universal Equality, Hashability, and Comparability
> thread
Thank you for driving this forward.
Equatability through conditional conformance has been discussed a lot,
but in the end we didn't get very far.
As for implicit or explicit adoption of the default equatability I am
undecided. If you have to opt in explicitly you will no longer get a
compiler warning if you forget to write your custom implementation (if
that is what you intended).
As for omitting properties from equating or hashing, I find this very
important. I didn't count my equatable structs, but I think many would
need a custom implementation, especially the more complex types.
I definitely want the option to include computed properties in the
equality test. A common scenario would be: omit two stored properties,
include one computed property instead.
It has also been suggested that property behaviors may be used for this.
I never followed the discussion on these, but here is a test balloon:
let a property (stored or computed) return an optional Bool when
compared to the same property of another instance. nil = don't care.
The property can decide whether to use simple equality (if defined) or
some struct type-specific equality. More flexible and saves two
keywords.
I don't know if and when property behaviors are going to happen.
Switching from attributes to property behaviors would be a thoroughly
breaking change of course.
Jan E.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160525/d2fa9a9d/attachment.html>
More information about the swift-evolution
mailing list