Тема: Чи можна з допомогою break/continue вийти з кількох вкладених циклів ?
В мене є функція (тут я її спростив), яка містить кілька вкладених циклів. Наприклад :
bool cond1 = true;
wc1: // мітка 1
while(cond1) {
bool cond2 = true;
wc2: // мітка 2
while(cond2) {
bool cond3 = true;
while(cond3) {
bool cond4 = true;
if(cond4) {
break;
break; // вихід з while(cond2) ? - не досяжний код
}
if(cond4)
continue wc1; // вихід з while(cond2) ? - помилка компіляції
bool cond5 = true;
if(cond5)
break wc1; // вихід з while(cond1) ? - помилка компіляції
// Я пам'ятаю, що в Java останні 2 випадки можна використовувати.
}
}
}
Мені потрібно з внутрішнього циклу вийти на N рівнів назад (відносно вкладеності циклів).
Я можу зробити і так :
bool cond1 = true;
while(cond1) {
bool cond2 = true;
while(cond2) {
bool cond3 = true;
while(cond3) {
bool cond4 = true;
if(cond4) {
goto after_wc2; // вихід з while(cond2).
}
bool cond5 = true;
if(cond5) {
goto after_wc1; // вихід з while(cond1).
}
}
}
after_wc2: // мітка 2
;
}
after_wc1: // мітка 1
;
але якось не привично.
Може існує якесь гарніше рішення ?
Тільки не питайте мене, нащо я це роблю. Мене цікавить чисто синтаксично чи можливо таке.