[ImageJ-devel] Simplifying loops?

Stephan Saalfeld saalfeld at mpi-cbg.de
Mon Jun 14 13:06:57 CDT 2010


Hi,

we implement java.lang.Iterator<T extends Type<T>> where next() returns
T, so no, next() cannot return boolean, fwd() and back() might do that.
In the coming changes, Image<T> implements java.lang.Iterable<T>, such
that the Java language shortcut works:

Image< T > image;
for ( final T : image ) {
    // meat of the loop
}

How's that?

Currently, Cursor<T> implements Iterable<T> such that you can do:

Cursor<T> cursor;
for (final T : cursor ) ...

instead,  but that's less sensible and will not stay.

Best,
Stephan




On Mon, 2010-06-14 at 18:54 +0200, Johannes Schindelin wrote: 
> Hi,
> 
> On Mon, 14 Jun 2010, Stephan Preibisch wrote:
> 
> > This is definitely something we could do as far as the linked iterators
> > work. Right now we did not do that because it is quite often extra work,
> > e.g. if you copy an image you need only one check instead of two:
> > 
> > cursor1, cursor2;
> > 
> > while ( cursor1.hasNext() ) 
> > {
> > 	cursor1.fwd();
> > 	cursor2.fwd();
> > 	// meat of the loop
> > }
> 
> Ah, I see. Maybe just a shortcut
> 
> 	public boolean next() {
> 		if (!hasNext())
> 			return false;
> 		fwd();
> 		return true;
> 	}
> 
> to optimize for the common case?
> 
> Ciao,
> Dscho
> 





More information about the ImageJ-devel mailing list