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@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@swift.org > https://lists.swift.org/mailman/listinfo/swift-users
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users