A million yes-es please.

l8r
Sean


> On Jan 13, 2017, at 1:51 PM, Adam Shin via swift-evolution 
> <[email protected]> wrote:
> 
> When using enums with associated values, it's often necessary to check for 
> equality between two enum objects in some way. That can lead to boilerplate 
> code like this:
> 
> enum Option {
>     case foo(String)
>     case bar(Int)
>       case zip
> }
> 
> func ==(lhs: Option, rhs: Option) -> Bool {
>     switch (lhs, rhs) {
>     case (.foo(let a), .foo(let b)) where a == b: return true
>     case (.bar(let a), .bar(let b)) where a == b: return true
>     case (.zip, .zip): return true
>     default: return false
>     }
> }
> 
> ..which results in code duplication and opens the door to potential logic 
> errors.
> 
> Instead, what if enums with associated values were automatically Equatable 
> when all their associated values were Equatable? That would remove the need 
> for such boilerplate code.
> 
> The Swift language guide states that custom classes and structs don't receive 
> a default implementation of the == operator because the compiler can't guess 
> what "equality" means for them. However, I think this could make sense for 
> enums. An enum case, even with associated values, seems closer to a value 
> itself than an object with logic and state.
> 
> I'd be interested to hear any thoughts on this. Would this be a beneficial 
> addition?
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to