The Existential Operator
me at aaron-powell.com
Tue May 20 03:30:30 PDT 2014
It might be worthwhile keeping an eye on the C# language discussion on the same operator - http://roslyn.codeplex.com/discussions/540883
From: es-discuss [mailto:es-discuss-bounces at mozilla.org] On Behalf Of A Matías Quezada
Sent: Tuesday, 20 May 2014 7:56 PM
To: Claude Pache
Subject: Re: The Existential Operator
I think the current use of this operator will only make sense if the operator interrupts the whole sentence so
Will be the same as
a && a.b.c
Will be same as
a && (x = a(), x.b && (x.b.c && x.b.c.d))
A. Matías Quezada
amatiasq at gmail.com <mailto:amatiasq at gmail.com>
2014-05-20 11:31 GMT+02:00 Claude Pache <claude.pache at gmail.com <mailto:claude.pache at gmail.com> >:
Le 20 mai 2014 à 05:50, Dmitry Soshnikov <dmitry.soshnikov at gmail.com <mailto:dmitry.soshnikov at gmail.com> > a écrit :
> (I remember, I mentioned this couple of years ago, but not sure about whether it was considered, etc)
> Will the "Existential Operator" for properly accessors be something interesting to consider for ES7 spec? Currently CoffeeScript uses it well.
> var street = user.address?.street;
> The `street` is either the value of the `user.address.street` if the `address` property exists (or even if it's an object), or `null` / `undefined` otherwise.
> This (roughly) to contrast to:
> var street = user.address && user.address.street;
> (the chain can be longer in many cases).
> The same goes with methods:
> var score = user.getPlan?().value?.score;
> If potentially it could be interesting for ES7, I'll be glad helping with the proposal, grammar and algorithm (unless it was considered previously, and decided that it's not for ES for some reason).
> P.S.: I tried to solve this issue using default values of destructuring assignment, but it doesn't help actually.
Question: What is the semantics of the following:
Is it the same thing as
(a && a.b).c
or the same thing as:
a && a.b.c
(For the sake of the argument, just ignore the distinction between "falsy" and "null/undefined".)
If it is the second option, I fear that the semantics of the so-called "existential operator" is more complicated than just an "operator".
es-discuss mailing list
es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss