Short Comparing proposal

kdex kdex at kdex.de
Wed Feb 1 17:50:25 UTC 2017


I actually don't think this is worth pursuing, as it can easily be 
implemented
by libraries once we solve operator overloading, without adding new syntax:

``
   if (1 < [2, 3])
``

Am 01.02.2017 um 18:12 schrieb Ryan Birmingham:
> I have a handfull of questions on this proposal as well:
> How would your proposal look with three or four things to check 
> against? Would the collection of things to check against be a variable?
> Would this be syntactic sugar to the array includes method, or would 
> this be something entirely new?
>
> -Ryan Birmingham
>
> On 1 February 2017 at 12:03, Felipe Nascimento de Moura 
> <felipenmoura at gmail.com <mailto:felipenmoura at gmail.com>> wrote:
>
>     I see...
>     we could perhaps think on some other approach.
>
>     What about:
>     if (obj.prop.prop ?== 'a' : 'b')
>
>     This way, we have "?==", which is not too chocking once we already
>     got "!==", and this kinda prepares the engine to deal with the
>     next values as part of the comparison.
>     Also, feels familiar due to " something ? 'a' : 'b' "
>
>     Personally, I don't feel that comfortable with this syntax.
>     We could think on different a token as well
>
>     if (obj.prop.prop === (? 'a' : 'b')) // feels like a ternary, but
>     without the first statement
>     if (obj.prop.prop === ('a'  | 'b'))) // could break the web once
>     it is already valid syntax (although not very used)
>     if (obj.prop.prop === ('a' :: 'b')) // perhaps a double colon
>
>     Anyways, open for suggestions :)
>
>
>
>
>     On Wed, Feb 1, 2017 at 2:48 PM Ryan Birmingham
>     <rainventions at gmail.com <mailto:rainventions at gmail.com>> wrote:
>
>         I like the idea, and I generally agree that your proposal
>         would increase readability, but I'm not a fan of the colon in
>         parenthesis.
>         In this context, the colon looks like it should represent a
>         member assignment of 'b' to 'a'.
>
>
>         -Ryan Birmingham
>
>         On 1 February 2017 at 11:27, Felipe Nascimento de Moura
>         <felipenmoura at gmail.com <mailto:felipenmoura at gmail.com>> wrote:
>
>             Hi.
>
>             I wonder if there is already a proposal for such thing or
>             if it would be something interesting to be proposal:
>
>             *The motivation:*
>             Let's say you have an object whose property you want to
>             compare to 'a' or 'b':
>
>             ```
>             if (object.property.secondProp === 'a' ||
>             object.property.secondProp === 'b') {
>               // do something
>             }
>             ```
>
>             *The proposal:*
>             Now, with this syntax you would be able to perform such
>             comparisons in a much simpler, better to read approach:
>
>             ```
>             if (object.property.secondProp === ('a' : 'b')) {
>                 // do Something
>             }
>             ```
>
>             And with the advance of the Optional Chaining Operator
>             <https://github.com/claudepache/es-optional-chaining> proposal,
>             it would get even better, like so:
>
>             ```
>             // this:
>             if (object &&
>             object.property &&
>             (object.property.secondProp === 'a' ||
>             object.property.secondProp === 'b')) {
>               // ...
>             }
>
>             // becomes this:
>             if (object?.property?.secondProp === ('a' : 'b')) { ... }
>             ```
>
>             *Alternatives:*
>             I do know that we could accomplish that with other
>             techniques, like:
>
>             ```
>             ['a', 'b'].includes(object.property.secondProp)
>             ```
>
>             I just think it might be counterintuitive and having a
>             syntax for a "short comparing" would be better for reading
>             and understanding.
>
>             Would make ternary comparison even shorter, too:
>
>             ```
>             let currentState = object.property.status === ('fail' :
>             'ok') ? 'done' : 'doing'
>             ```
>
>             Please let me hear your thoughts on that :)
>
>             Regards.
>
>
>
>
>
>
>
>             _______________________________________________
>             es-discuss mailing list
>             es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
>             https://mail.mozilla.org/listinfo/es-discuss
>             <https://mail.mozilla.org/listinfo/es-discuss>
>
>
>
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20170201/d7382f91/attachment-0001.html>


More information about the es-discuss mailing list