Re: [VOTE] Generators
| From: | Derick Rethans | Date: | Thu, 30 Aug 2012 08:39:14 +0000 |
| Subject: | Re: [VOTE] Generators | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-62596@lists.php.net to get a copy of this message | ||
On Wed, 29 Aug 2012, Gustavo Lopes wrote:
> On Wed, 29 Aug 2012 22:10:52 +0200, Derick Rethans <derick@php.net> wrote:
>
> > On Wed, 29 Aug 2012, Nikita Popov wrote:
> >
> > > > function &bind(array $keys, array &$row)
> > > > {
> > > > foreach($keys as $key)
> > > > yield $key => $row[$key];
> > > > }
> > > >
> > > > $row = [];
> > > > $it = bind(['a', 'b'], $row);
> > > >
> > > > foreach($it as $key => &$ref)
> > > > echo $key;
> > > > echo "\n";
> > > > foreach($it as $key => &$ref)
> > > > echo $key;
> > >
> > > Thanks, this is now fixed. It'll throw an exception now, saying that
> > > you can't traverse an already closed generator.
> >
> > Nothing in the core throws an exception, why would this?!
>
> This is not accurate. All the iterators throw exceptions on similar
> situations. Generators are iterators, so I see no deviation from the
> norm here.
Nothing shows that they are. In any example I saw, I don't even see any
OO syntax/functionality. For me, "yield" is a core syntax *keyword*, and
hence: no exceptions.
cheers,
Derick
--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
Posted with an email client that doesn't mangle email: alpine