Hi David, I have been using ?( as kind of a more general meaning that there is a question here not that ? is just for optionals. I am fine with using some other character or word if it expresses the idea that the expression returns one of the results based upon the control parameter. ? is kind of established for the ternary though. Any word should be very short. In the alternatives considered I talk about using if(, switch(, select( would that be preferable? I am still hoping to keep it really short though. Other than using the words as shown, i am having a hard time coming up with something that would be better than ?.
- Paul > On Dec 23, 2015, at 10:39 PM, David Waite via swift-evolution > <swift-evolution@swift.org> wrote: > > My only issue (barring any longer term plan to move toward everything being > an expression) is that the question mark already has many uses in the > language. If we aren’t supporting the C-style ternary operator syntax, I > don’t know if there is a good reason anymore to use ‘?’ considering its heavy > use around optionals. > > -DW > >> On Dec 23, 2015, at 2:05 PM, Rainer Brockerhoff via swift-evolution >> <swift-evolution@swift.org> wrote: >> >> On 22/12/15 16:50 , swift-evolution-requ...@swift.org wrote: >>> Date: Tue, 22 Dec 2015 10:07:26 -0800 >>> From: Jordan Rose <jordan_r...@apple.com> >>> To: Thorsten Seitz <tseit...@icloud.com> >>> Message-ID: <2d35f5bd-3ddf-43c3-a461-14fb65530...@apple.com> >>> >>> I think this is a good point. We definitely want to keep the boolean >>> ternary operator compact for the simple cases, and that may be at >>> odds with a general switch expression (with multi-case pattern >>> match). >> >> +1 for a compact form. >> >> I use the boolean ternary a lot, and I'd really dislike complicating it >> with keywords or expanding it into a multiline construct with cases. >> >> Nesting is of course its main problem. >> >> >>> Date: Tue, 22 Dec 2015 10:53:50 -0800 >>> From: Paul Ossenbruggen <pos...@gmail.com> >>> Message-ID: <7c5eca99-4527-4995-8503-215f294cc...@gmail.com> >>> >>> • it is hard to tell when a ternary begins and ends, especially when nested. >> >> At first I liked Paul's original proposal of >> let a = ?(x == y: a, b) >> but I now think something intermediate like >> let a = x == y ?(a, b) >> would look better; it does take care of nesting. For more clarity one >> could always write >> let a = (x == y) ?(a, b) >> >>> • It is not until you get to the question mark that you realize it is a >>> ternary. >> >> I think that's actually a good thing. You (or the parser) have found a >> boolean expression and when the ?( appears you understand the result is >> fed into a selector. Were the ? and ( separate you could consider ? as a >> binary operator accepting a boolean and a 2-tuple. >> >> Today, using ? as an operator appears not to be allowed, but >> public func ??<T> (left:Bool, right: (T, T)) -> T { >> if (left) { >> return right.0 >> } >> return right.1 >> } >> already works: >> let a = (x == y) ?? (a, b) >> runs as expected. Downside, no @autoclosure on tuple items. >> >> IOW, you shouldn't be too surprised finding a binary operator after an >> expression :-) >> >> -- >> Rainer Brockerhoff <rai...@brockerhoff.net> >> Belo Horizonte, Brazil >> "In the affairs of others even fools are wise >> In their own business even sages err." >> http://brockerhoff.net/blog/ >> _______________________________________________ >> 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 _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution