>> 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.  If you want to make this 
> more like ternary we should just allow `:` without any keyword for the 
> default clause.
> 
> 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 don’t see anything in that document that says that replacing ‘:' with ‘else:' 
in a ternary is necessarily a nonstarter - the ternary feature would still 
exist, it would only be *slightly* more verbose. The document says that one 
that is “better enough” hasn’t been found yet but it doesn’t read to me that it 
is a declared fact that “better enough” will *never* happen.

In any case, replacing ternary isn’t really something I care about - but I do 
want switch-as-expression since I’ve run into that a *lot* in one of my current 
projects where I adopted enums quite heavily. My suggestion was only that such 
a construct *could* be massaged to also cover ternary and thus could be 
considered a single construct that solved two “problems”: changing ternary to 
stand out slightly more, and getting switch-as-expression at the same time.

l8r
Sean

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

Reply via email to