[swift-evolution] Proposal: pattern match based on associated value(s) only

Amir Michail amichail at gmail.com
Tue Feb 23 06:17:36 CST 2016


> On Feb 22, 2016, at 10:11 PM, Brent Royal-Gordon <brent at architechies.com> wrote:
> 
>> For example:
>> 
>> enum Color {
>> 	...
>> }
>> 
>> enum Vehicle {
>> 	case Car(Color)
>> 	case Motorcycle(Color)
>> 	...
>> }
>> 
>> switch vehicle {
>> 	case _(.Red): … // pattern match based on associated value only
>> }
> 
> As usual, Amir: 
> 
> 1. Why do you want this feature?

In this example, if there are many kinds of vehicles, it would be annoying to have to write a case for each one to match associated value .Red.

> 
> 2. What's actually wrong with the status quo?
> 

What would that be for this example? Many cases?

> 3. Can you talk about a non-toy example you've encountered where it would have made your code better?
> 
> 4. Can you talk about the proposed design in a little more detail? Are there weird edge cases, and how would you handle them? (In the case of this feature, here's one I see: Suppose you have two different associated value types but they both have a .Red case. What happens then?)
> 
> A half-dozen-word subject line and a code example simply aren't enough to evaluate a proposal. Without knowing exactly what you're proposing and why you think it's a good idea, we can't really evaluate it properly.
> 
> -- 
> Brent Royal-Gordon
> Architechies
> 



More information about the swift-evolution mailing list