destructuring: as patterns?

Irakli Gozalishvili rfobic at gmail.com
Wed Apr 18 09:04:26 PDT 2012


Another option that feels intuitive to me is: 

let { a, b: ({ x, y }) } = object; 

Parentesis imply that I want both parent and matched children.
Regards
--
Irakli Gozalishvili
Web: http://www.jeditoolkit.com/


On Wednesday, 2012-04-18 at 09:01 , Irakli Gozalishvili wrote:

> 
> 
> On Wednesday, 2012-04-18 at 08:26 , Brendan Eich wrote:
> 
> > We've supported destructuring for years and no one has asked for this. I 
> > say YAGNI and when in doubt, leave it out. One can always write two 
> > destructuring declarations without much repetition:
> > 
> > let {b} = obj;
> > let {x,y} = b;
> > 
> > but of course one would just write
> > 
> > let {x, y} = obj.b;
> > 
> > in that contrived case.
> > 
> > Main thing is, not having as-patterns is not a big deal based on 
> > experience with JS1.7+ since 2006 in Mozilla code.
> > 
> 
> To be honest I've being running into cases where I wished I could match both parent and children in some way.  Also, I think that Herby's version is better in fact I had to learn that it's illegal. Unless it's too much of a deal I'd also like following to work:
> 
> let { a, b, b: { x, y } } = object;
>  
> > /be
> > 
> > Claus Reinke wrote:
> > > Looking through the destructuring proposal
> > > 
> > > http://wiki.ecmascript.org/doku.php?id=harmony:destructuring
> > > 
> > > there seems to be no mention of 'as' patterns. In typical pattern
> > > matching constructs (SML, Haskell, ..), 'as' patterns allow to name a 
> > > sub-object while continuing the match for its sub-structures.
> > > For instance, with
> > > var obj = { a: 0, b: { x: 1, y: 2} };
> > > 
> > > something like
> > > 
> > > let { b: b as {x,y} } = obj
> > > 
> > > would result in the bindings of b to obj.b, x to obj.b.x, y to obj.b.y.
> > > 
> > > This avoids needless repetition when both a subobject and its
> > > components need to be extracted. Without 'as', each such case
> > > leads to a separate destructuring assignment
> > > 
> > > let { b } = obj
> > > let { b: {x,y} } = obj
> > > 
> > > Shouldn't 'as' patterns be included in destructuring? Or have I
> > > missed an equivalent feature?
> > > 
> > > Claus
> > > 
> > > _______________________________________________
> > > es-discuss mailing list
> > > es-discuss at mozilla.org (mailto:es-discuss at mozilla.org)
> > > https://mail.mozilla.org/listinfo/es-discuss
> > > 
> > 
> > _______________________________________________
> > es-discuss mailing list
> > es-discuss at mozilla.org (mailto: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/20120418/41f0b39a/attachment-0001.html>


More information about the es-discuss mailing list