groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Dorner <felix.dor...@gmail.com>
Subject Re: Calling 'each' on org.eclipse.emf.common.util.TreeIterator
Date Tue, 16 Oct 2018 16:59:29 GMT
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 I am testing, because that iterator is also a list... (But
the tree iterator contents are actually more than the contents of that
list, because the list is a list of root elements, just imagine a dom tree,
it's the same thing). I'll figure something out.



On Tue, Oct 16, 2018 at 6:17 PM Felix Dorner <felix.dorner@gmail.com> wrote:

> 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/plugins/org.eclipse.emf.ecore/src/org/eclipse/emf/ecore/impl/BasicEObjectImpl.java#n832
> and that is an anonymous subtype of
>
> http://git.eclipse.org/c/emf/org.eclipse.emf.git/tree/plugins/org.eclipse.emf.common/src/org/eclipse/emf/common/util/AbstractTreeIterator.java
>
>
>
>
> On Tue, Oct 16, 2018 at 3:21 PM Paul King <paulk@asert.com.au> wrote:
>
>> 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, 2018 at 8:23 PM Felix Dorner <felix.dorner@gmail.com>
>> wrote:
>>
>>> 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, not the whole
>>> content tree. Anyone can explain why?
>>>
>>>
>>> --
>>> Linux. The choice of a GNU generation.
>>>
>>
>
> --
> Linux. The choice of a GNU generation.
>


-- 
Linux. The choice of a GNU generation.

Mime
View raw message