コードはCのように見えます。Cでは、プロセスは、呼び出し元の関数を離れた後、特定のスタック状態に戻ることはできません。したがって、ループを離れて後でループに戻ることは、言語レベルでは不可能です。他の言語では、物事は異なります。たとえば、Python言語のPypy実装では、コンティニューレットを使用して、記述した内容を実現できます。
ただし、独自のオブジェクトを使用して最後のカウンターを格納することにより、同様の方法を実現できます。
struct counters { int x, y, z; };
bool continueLoops(struct counters *ctrs) {
for (; ctrs->x < t.X; ctrs->x++) {
for (; ctrs->y < t.Y; ctrs->y++) {
for (; ctrs->z < t.Z; ctrs->z++) {
// ..
if (weWantToInterruptTheLoop)
return true;
}
ctrs->z = t.z;
}
ctrs->y = t.y;
}
return false;
}
void startLoops() {
struct counters ctrs;
ctrs.x = t.x;
ctrs.y = t.y;
ctrs.z = t.z;
while (continueLoops(&ctrs)) {
// do whatever you want to do between loops
}
}
ただし、内側のループ内で直接関連する操作を実行するのとは対照的に、上記のアプローチにはあまりメリットがありません。ですから、これがあなたにとって役立つかどうかはわかりません。