iterator and tuple with forIterator

"Dan Shryock" <[email protected]> Fri, 28 Mar 2008 16:01:00 -0700
Newsgroups gmane.comp.lang.nice.general
Message-ID <[email protected]>
As an experiment to become more familiar with nice, I decided to try
to build a new forIterator method for maps that allows you to iterate
over a tuple of key values.  The forIterator looks like the following,
and works fine:

<K,V> Iterator<(K,V)> forIterator(Map<K,V> map){
	let entries = map.entrySet().iterator();
	return (() => {
		if(entries.hasNext()){
			let entry = entries.next();
			return (entry.getKey(),entry.getValue());
		}
		return stop();
	}).iterator();
}

However to use the forIterator, I had to place a temporary variable as
the item in the for statement, then pull the values out inside the
loop.
void main(String[] args){

	Map<String,String> mapdata = listToMap([
					("test1","Bla1"),
					("test2","Bla2")
					]);

	//This works
	for(entry :mapdata){
		(String key, String value) = entry;
		println("Map Iteration Test:" key "=" value);
	}

	//Doesn't compile
	for((String key, String value):mapdata)
		println("Map Iteration Test:" key "=" value);

}

Is this a bug, or is there another way to express this without the
temp variable?

Thanks

Dan

BTW: I haven't been able to get buy in to start using nice, but it is
indeed a very nice language to play with

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace