你的代碼看起來像C.在C語言中,一個過程不能離開調用函數後返回給定的疊加狀態。所以留下一個循環,然後返回到它是不可能在語言級別。在其他語言中,事情是不同的。例如。在Python語言的Pypy實現中,可以使用continuelets來實現您所描述的內容。
但是,您可以通過使用自己的對象來存儲最後的計數器來實現類似的方法。
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
}
}
不過,我沒有看到上面的方法多少好處,而不是直接在內部循環中執行相關操作。所以我不確定這對你是否有用。
來源
2012-11-15 19:11:58
MvG
你的意思是你想在最外層循環的每次迭代結束時存儲狀態嗎? – crnlx
例如,我想更改立方體中的所有塊。我知道我想在300次更改後停止,現在我需要繼續填充魔方。 我想我找到了使用while循環的解決方案,但我現在還不確定 –