switch
Jancy encloses all the case blocks in switch statements into implicitly created scopes. This means you are free to create and use local variables in switch statements:
void foo(int x) {
switch (x) {
case 0:
int i = 10;
break;
case 1:
int i = 20; // no problem: we are in different scope
case 2:
int i = 30; // no problem even when we fall-through from previous case label
break;
default:
int i = 40; // still ok. you've got the idea
}
}
Multi-level breaks can be applied to switch statement as well. In example below break2 is used to break out of the switch statment and then out of the outer loop:
for (;;) {
Request request = getNextRequest();
switch (request) {
case Request.Terminate:
break2; // out of the loop
case Request.Open:
// ...
break;
case Request.Connect:
// ...
break;
// ...
}
}