Ok so to summarize, the trap is that I call each {} on an object that is
both, an List/Iterable and an Iterator at the same time. The result is that
either of these two is called, and it happens to be random which one.
http://docs.groovy-lang.org/docs/groovy-2.5.1/html/api/org/codehaus/groovy/runti
I think I "know" what's going on.. I have a hard time trying to figure
actually out which 'each' implementation is called, but if it is
"DefaultGroovyMethods.each", this will not work: The default groovy methods
each calls 'iterator' on the argument, which happens to be defined in the
iterator that
If I use hasNext/next in a while loop, I get at the content as expected,
but not if I use the collection extensions such as 'each'. I don't know
where the magic fails, but I want to find out.. The iterator that is being
used is created here:
http://git.eclipse.org/c/emf/org.eclipse.emf.git/tree/pl
I'd expect that to work the same as if you used a while loop with hasNext()
and next(). If your data structure has further containers and next()
doesn't normally walk through the containers, then I'd expect you to have
more work to do. Is that not what you are seeing?
Cheers, Paul.
On Tue, Oct 16
Hi,
I can do:
def a = [1,2,3].iterator()
a.each {
println it
}
Cool, I can walk EMF EObject trees like this, I thought:
Iterator i = anEObject.eAllContents() // this gives a TreeIterator, a
subinterface of Iterator
it.each {
println it
}
But that doesn't work :(. It only prints anEObject,