This is perfect! No need for extra syntax :-) Thanks a lot! :-)
On Fri, Nov 4, 2011 at 5:01 PM, Christophe <[email protected]> wrote: > "Steven Schveighoffer" , dans le message (digitalmars.D:146563), a > écrit : > > The foreach delegate syntax already allow you to have parametrized > iteration over a structure ! > > Actually, the delegate do not have to be returned by the & operator, it > can be returned by a function. It's a bit awkward first, but then it's > easy to use: > > struct Iterable > { > int delegate(int delegate(ref int)) inReverse() > { > return () > { > int result = 0; > foreach(int i; 0..100) > { > auto t = 99-i; > if((result = dg(t)) != 0) break; > } > return result; > } > } > > int delegate(int delegate(ref int)) byStep(int step) > { > return() > { > int result = 0; > foreach(int i; iota(0, 100, step)) > { > auto t = i; > if((result = dg(t)) != 0) break; > } > return result; > } > } > } > > > int main() > { > Iterable it; > foreach (i; it.inReverse) writeln(i); > foreach (i; it.byStep(2)) writeln(i); > } > > > There is no need to add a special syntax to do what you want ! > > Maybe there should be a bit more documentation about this. >
