Assignment has the lowest precedence. 'x = condition ? y : z' doesn't make sense if assignment is resolved before the ternary; the compiler would complain that perhaps you meant '==' instead of '='.
There was an idea ages ago for essentially a 'switch expression' which was effectively ternary for cases; if we ever make that a reality, it should probably have the same precedence as ternary. But otherwise it's probably going to continue to be a group of one. On Tue, Aug 2, 2016 at 10:29 AM, Anton Zhilin via swift-evolution < swift-evolution@swift.org> wrote: > 2016-08-02 7:18 GMT+03:00 Félix Cloutier <swift-evolution@swift.org>: > >> I disagree. The binary operators have properties that are comparable to >> arithmetic operators, and their precedence is easy to define as such. & has >> multiplication-like properties (0*0=0, 0*1=0, 1*0=0, 1*1=1); | has >> addition-like properties (0+0=0, 0+1=1, 1+0=1, 1+1=2); ^ has >> subtraction-like properties (0-0=0, 0-1=-1, 1-0=1, 1-1=0), and their >> precedences are set accordingly (& is multiplicative, | and ^ are additive). >> >> The same applies to && and ||. Bit shifts are exponentiative. >> > > I believe that such way of thinking is non-intuitive. In C, bitwise > operators are not intervened by any others, except for comparison operators > (agreed, it was a mistake). We now have possibilities to do so in Swift, > even better. I suggest to branch off right before AdditionPrecedence: > > RangeFormation < Addition < Multiplication > RangeFormation < BitwiseOr < BitwiseAnd < LogicalShift > > Another concern is NilCoalescing, which can be though to be semantically > similar to Ternary. And at the same time it looks like || and &&, which > would bring it between LogicalConjunction and Comparison. > Also, do Casting and RangeFormation stand where they should? > > Next, Ternary operator is unique. Noone would ever like to put operators > in this precedence group, because it would be confusing. Why not simplify > our model and say that ?: has lower precedence than all binary operators, > including Assignment? Unary > binary > ternary, sounds good? > > _______________________________________________ > 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