Claude Pache wrote:
Le 11 févr. 2013 à 06:25, Brendan Eich<bren...@mozilla.com>  a écrit :

This is exactly what's proposed for ES6, except s/.source/.value/. See also 
PEP-380.

/be

By reading [1] (and PEP-380), it seems to me that the "value" property is 
rather set to be the value of the return statement.

Yes; also the StopIteration constructor's parameter for explicit constructions.

  Thus, to be more complete and to avoid confusion: Inside a generator function, a return statement 
will throw a StopIteration instance with its "value" property set to the value of the 
return statement and its "source" property set to the generator iterator which is being 
terminated. You can create manually such a StopIteration with: new StopIteration(source, value)

Is 'source' worth its weight by default? Python manages without.

/be


[1] http://wiki.ecmascript.org/doku.php?id=harmony:generators

—Claude

Claude Pache wrote:
In order to mitigate the problem, instead of throwing a generic StopIteration, I think we 
ought to throw a specific StopIteration instance with information on which iterator has 
thrown. More precisely, inside a generator function, a return statement will throw a 
StopIteration instance with its "source" property set to the generator iterator 
which was terminated.

For manually throwing a StopIteration from inside a "next" method of an 
iterator, we could use:

        throw new StopIteration(this)

And instead of "e instanceof StopIteration", we may use a more precise check:

     e instanceof StopIteration&&   e.source === it


_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to