[swift-users] Associativity of && and || operator

rintaro ishizaki fs.output at gmail.com
Fri Feb 17 02:54:50 CST 2017


Hello all,

Why the associativity of Logical{Conjunction,Disjunction}Precedence is "left
"?

If you write: A && B && C, it's grouped as (A && B) && C.
This means that the && function is *always* called twice: (&&)((&&)(A, B),
C).
I feel "right" associativity is more natural:  (&&)(A, (&&)(B, C)),
because the && function is called only once if A is false.

I know that redundant && calls are optimized away in most cases.
I also know C and C++ standard says: "The && operator groups
left-to-right", and most programming languages follow that.

But why not "right" associativity?
What is the difference between logical operators and ?? operator that has "
right" associativity?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170217/d3aa19e4/attachment.html>


More information about the swift-users mailing list