> Am 05.01.2016 um 17:29 schrieb Matthew Johnson <matt...@anandabits.com>:
> 
> 
>> On Jan 5, 2016, at 10:23 AM, Sean Heber <s...@fifthace.com> wrote:
>> 
>> 
>>> On Jan 5, 2016, at 12:29 AM, Thorsten Seitz via swift-evolution 
>>> <swift-evolution@swift.org> wrote:
>>> 
>>> I once suggested the following ternary like switch:
>>> 
>>> let x = color ?
>>>       case .Red: 0xFF0000
>>>    case .Green: 0x00FF00
>>>       case .Blue: 0x0000FF 
>>>       default: 0xFFFFFF
>> 
>> This is my favorite and addresses the sort of situations I’ve run into where 
>> using a switch statement seems unnecessarily bulky. I’d like to see this as 
>> a proposal because it’d be a very useful construct on its own.
>> 
>> Using “else” would be maybe a little odd when paired with cases, but it also 
>> doesn’t look bad and, I think, could be argued that it makes sense in the 
>> context of an expression:
>> 
>> let x = color ?
>> case .Red: 0xFF0000
>> case .Green: 0x00FF00
>> case .Blue: 0x0000FF
>> else: 0xFFFFFF
>> 
>> Then you could say this when using a boolean:
>> 
>> let x = something ? case true: thing() else: otherThing()
>> 
>> And maybe allow a special case for boolean where you can leave off the “case 
>> true:” part:
>> 
>> let x = something ? thing() else: otherThing()
>> 
>> And then you could more or less replace ternary with this new construct that 
>> can do even more while looking very similar and still being pretty terse and 
>> the addition of “else” in there makes the entire expression stand out a bit 
>> more than traditional ternary expressions which, I think, addresses one of 
>> the complaints there.
> 
> I do not like this idea.  I think a case expression should follow the case 
> statement where a corresponding keyword is used.  

That's what I am thinking as well. Keep the similarities with the corresponding 
statement as much as possible otherwise the result will be confusing.

> If you want to make this more like ternary we should just allow `:` without 
> any keyword for the default clause.

No, please. As I just said, keep the similarities with the corresponding 
statement as close as possible.

> Your suggestion that this would replace ternary and require an `else:` 
> instead of `:` is going to be a non-starter.  You may want to read the 
> “frequently proposed changes” document as it explains why such a change won’t 
> happen.

I'd prefe to keep the ternary as most compact form of a conditional instead of 
watering down the switch-expression. Too confusing IMO.


-Thorsten 
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to