Great, thanks

2011/5/27 Pierre Fouche <[email protected]>

> Done: https://trac.neo4j.org/ticket/345.
>
> On Thu, May 26, 2011 at 10:27 AM, Mattias Persson <
> [email protected]
> > wrote:
>
> > Sure, why not. There may even be a ticket about this in there
> somewhere...
> >
> > 2011/5/26 Pierre Fouche <[email protected]>
> >
> > > Thanks Mattias. Do you want me to log a ticket for that ?
> > >
> > > --Pierre
> > >
> > > On Wed, May 25, 2011 at 1:06 PM, Mattias Persson
> > > <[email protected]>wrote:
> > >
> > > > Hi Pierre,
> > > >
> > > > that's a correct observation and I think the reason for it is that it
> > was
> > > > easier to write it like that and then it was left in that state. I'm
> > > pretty
> > > > sure I've never some across anyone, before you, that have had a
> problem
> > > > with
> > > > it. Nonetheless I think it'd be nice to fix it, and at the same time
> > take
> > > a
> > > > look at all the iterables in there.
> > > >
> > > > 2011/5/25 Pierre Fouche <[email protected]>
> > > >
> > > > > Hi,
> > > > >
> > > > > This might seem a minor point but...
> > > > >
> > > > > The method Node.getRelationships() returns Iterable<Relationships>,
> > > > > implemented by IntArrayIterator. It turns out that IntArrayIterator
> > > > > implements both Iterable and Iterator, its iterator() method
> > returning
> > > > > itself.
> > > > >
> > > > > My understanding was that an Iterable was supposed to be stateless,
> > > > whereas
> > > > > an Iterator is obviously stateful. Having a stateless Iterable
> makes
> > it
> > > > > useable multiple times in a foreach loop, as it returns a new
> > Iterator
> > > > > whenever iterator() is called. See for instance
> > > > >
> > > > >
> > > >
> > >
> >
> http://stackoverflow.com/questions/839178/why-is-javas-iterator-not-an-iterable
> > > > >
> > > > > Unfortunately, IntArrayIterator is a stateful Iterable.
> > > > >
> > > > > I've noticed that Traverser, which extends Iterable, is implemented
> > by
> > > > > TraverserImpl, which does not implement Iterator, but returns a new
> > > > > TraverserIterator whenever iterator() is called. This seems right
> to
> > > me.
> > > > >
> > > > > I actually ran into this stateless/stateful issue when I refactored
> a
> > > > piece
> > > > > of code that was using the traversal framework and now uses
> > > > > getRelationships
> > > > > instead. Some of the tests failed because they were reusing a
> > resulting
> > > > > Iterable.
> > > > >
> > > > > Is the design of IntArrayIterator intentional? Or is it an
> oversight?
> > > > >
> > > > > Thanks,
> > > > > Pierre
> > > > > _______________________________________________
> > > > > Neo4j mailing list
> > > > > [email protected]
> > > > > https://lists.neo4j.org/mailman/listinfo/user
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Mattias Persson, [[email protected]]
> > > > Hacker, Neo Technology
> > > > www.neotechnology.com
> > > > _______________________________________________
> > > > Neo4j mailing list
> > > > [email protected]
> > > > https://lists.neo4j.org/mailman/listinfo/user
> > > >
> > > _______________________________________________
> > > Neo4j mailing list
> > > [email protected]
> > > https://lists.neo4j.org/mailman/listinfo/user
> > >
> >
> >
> >
> > --
> > Mattias Persson, [[email protected]]
> > Hacker, Neo Technology
> > www.neotechnology.com
> > _______________________________________________
> > Neo4j mailing list
> > [email protected]
> > https://lists.neo4j.org/mailman/listinfo/user
> >
> _______________________________________________
> Neo4j mailing list
> [email protected]
> https://lists.neo4j.org/mailman/listinfo/user
>



-- 
Mattias Persson, [[email protected]]
Hacker, Neo Technology
www.neotechnology.com
_______________________________________________
Neo4j mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to