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

Saagar Jha saagar at saagarjha.com
Fri Feb 17 03:03:41 CST 2017


Left associativity is most likely just a holdover from the C family–not conforming with it would break expectations for programmers coming from these languages. And as you mentioned, the compiler will short-circuit the condition and stop evaluating as soon as it encounters a false condition, so there’s no measurable benefit.

Saagar Jha

> On Feb 17, 2017, at 12:54 AM, rintaro ishizaki via swift-users <swift-users at swift.org> wrote:
> 
> 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?
> 
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170217/86aaebda/attachment.html>


More information about the swift-users mailing list