Letting RegExp method return something iterable?

Forbes Lindesay forbes at lindesay.co.uk
Mon Aug 26 17:30:29 PDT 2013


`String#split` already is iterable because it returns an array.  What it isn't is **lazy**.

To be equivalent to the for code, the let needs to go inside the body of the while, not outside.  This neatly demonstrates the key point:

 - as it stands, writing this kind of code tends to be bug prone (i.e. people get it wrong in confusing ways)
 - it would be less bug prone if there was just a method that returned an iterable.  That _could_ be an Array, rather than a lazy collection.

On 27 Aug 2013, at 01:20, "Andrea Giammarchi" <andrea.giammarchi at gmail.com<mailto:andrea.giammarchi at gmail.com>> wrote:

```javascript
{let m; while(m = re.exec(str)) {
  // ... no, really
}}
```
I don't get the need of this but if this is the trend then String#split needs an iterable too (no!)




On Mon, Aug 26, 2013 at 4:23 PM, Brendan Eich <brendan at mozilla.com<mailto:brendan at mozilla.com>> wrote:
Andrea Giammarchi wrote:
Is it very useful because you wrote for instead of while ?

```javascript
while (m = re.exec(str))
  console.log(m[0])
;
```

It is, for two reasons:

1. in JS only for can have a let or var binding in the head.

2. the utility extends to all for-of variations: array comprehensions, generator expresisons.

/be

_______________________________________________
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/20130827/8f5c87b6/attachment-0001.html>


More information about the es-discuss mailing list