PROPOSAL: Enhanced for each loop iteration control
Bruce Chapman
brucechapman at paradise.net.nz
Wed May 6 02:45:30 PDT 2009
> I don't understand what you mean by "breaking on nested loops". Support for nested loops is why I suggested "#foo" instead of just "#"... the specification use of the loop variable indicates the nesting level. For instance, you could do something like:
>
> for (Thing foo : whatever) {
> for (Thing bar : whateverElse) {
> doSomethingWith(foo, bar, #foo, #bar);
> }
> }
>
> Derek
>
>
>
I am not really excited about this proposal, but I just had this thought
for a possible syntax.
The idea is to hybridize the for-each and conventional for syntax, but
you don't need the (stopping) expression from conventional syntax
(foreach does that), but you could include the initializing portion and
updating portion like this
HybridForStatement
for ( /VariableModifiers_opt Type Identifier /: Expression ; /ForInit_/opt/ / //; /ForUpdate_/opt/ / ) /Statement
Then to do an indexed loop you could write
/
for (Thing foo : whatever; int i=0; i++) {
for (Thing bar : whateverElse; int j=0; j++ ) {
doSomethingWith(foo, bar, i, j);
}
}
but it's not that much different than what you can do (irrespective of the exotic formatting) already
int i=-1; for (Thing foo : whatever) { i++;
int j=-1; for (Thing bar : whateverElse ) { j++;
doSomethingWith(foo, bar, i, j);
}
}
Bruce
More information about the coin-dev
mailing list