Thank you for your feedback! Just want to respond a little bit, I don’t believe it is any worse than the ternary in terms of it being non obvious as to what it does, and it adds a lot of power beyond the ternary, because now you can switch to more than two outcomes.
In terms of readability, it does improve on the ternary because I often find it hard to determine where a ternary begins, in unfamiliar code, looking at: x = x == y ? 49 : 3 It is not until you get to the question mark that you realize it is a ternary and the x == y just is kind of floating there. The = and == just looks strange. Many do this to make it look better: x = (x == y ? 49 : 3) With the new form: x = ?(x == y : 49, 3) The x == y pops out more, similar to how adding the parenthesis helps, and you can immediately tell that this is part of a demux expression. This codifies the practice, of putting in parenthesis, in the same way that mandatory braces in control flow statements make the statements stand out. So I do believe it does address some of the problems with ternary. If that is not enough of a difference from ternary to make this proposal fly, then maybe the hybrid approach outlined in Alternatives Considered section would be preferred? One example: x = if(x == y : 49, 3) This looks more function like and has many of the benefits of my original proposal and perhaps better addresses some of the downside of the ? being non obvious as to what it does at the expense of conciseness. Although, as Austin Zheng says, ? is for query, not necessarily just to indicate optional. If we don’t go with that interpretation of ?, this direction, may help to keep the concept of ? for optionals. Ternary kind of steps into that and makes it less separated so this alternative may be a better direction. I don’t object to this approach, if that is the consensus. - Paul > On Dec 19, 2015, at 7:55 PM, Jordan Rose <jordan_r...@apple.com> wrote: > > It's a nice, consistent proposal, but I don't feel like this solves any of > the complaints about the existing ternary operator: > > - It's not obvious what it does when you first learn it. > - The '?' doesn't have anything to do with Optionals. > > It is a way to put 'switch' into an expression. I'm not a fan of the two > different colons, but that's "just" syntax. > > Jordan > >> On Dec 18, 2015, at 14:04 , Paul Ossenbruggen via swift-evolution >> <swift-evolution@swift.org> wrote: >> >> All, >> >> I think, I finally might have the answer to improving ternary, with such a >> bold statement come some pretty high expectations but I think, I might >> actually have done it this time :-) >> >> I am calling it the Demux Expression, it builds on the benefits of ternary >> and switch while improving on those. >> >> https://github.com/possen/swift-evolution/blob/master/proposals/0024.md >> >> This is a first draft, thanks in advance for feedback! >> >> - Paul >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution > _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution