Chained Control Flow Statements: break [, break]... [,continue]
От: Caracrist https://1pwd.org/
Дата: 15.09.24 19:07
Оценка: :)
Концепция заключается в том, чтобы разрешить использование нескольких операторов `break` и опционального оператора `continue` в одной строке, как показано ниже:

while (cond1) // возврат сюда из: break, continue
{
    while (cond2)
    {
        if (cond3)
        {
            break, break; // выход из внутреннего и внешнего цикла
        }
        else if (cond4)
        {
            break, continue; // выход из внутреннего цикла и продолжение во внешнем цикле
        }
    }
    // этот код выполняется только если !cond2
}
// код выполнен после "break, break" или если !cond1


while (cond1) // возврат сюда из: break, continue
{
    switch (item)
    {
        case value1:
            break, break; // выход из switch и внешнего цикла
        case value2:
            break, continue; // выход из switch и продолжение во внешнем цикле
        default:
            break;
    }
    // этот код выполняется только если был default
}
// код выполнен после "break, break" или если !cond1


Операторы `break` могут завершать выполнение циклов или блоков `switch case`. Количество операторов `break` ограничено количеством вложенных областей, из которых можно выйти, тогда как оператор `continue` может быть только один и должен быть последним в последовательности.

Формальное определение (subj):

break [, break]... [, continue]


Это означает, что внутри блока кода могут использоваться несколько операторов `break` и опционально `continue` в конце. Ни один из них не обязателен, что обеспечивает полную обратную совместимость.

Обычно альтернативы этому подходу включают управление несколькими флагами, подобное конечному автомату, распределённому между локальными переменными, а также множество операторов `if`, чтобы обработать условия в нужном месте. Это может усложнить как код, так и его читаемость.

Кроме того, поскольку каждый оператор (`break`, `continue`) является отдельным словом, они могут подсвечиваться в IDE, показывая свою связь с соответствующим блоком (`for`, `foreach`, `while`, `switch`, `do`). Во время отладки эти операторы могут выполняться по одному, подобно тому, как выполняется код внутри `for (statements)`, с независимой подсветкой каждой части строки.

Если вам знакома эта боль, приглашаю поддержать на: https://github.com/dotnet/csharplang/discussions/8434 (стрелкой вверх)
~~~~~
~lol~~
~~~ Single Password Solution
Re: Chained Control Flow Statements: break [, break]... [,continue]
От: m2user  
Дата: 15.09.24 23:42
Оценка: +3
labeled loops в Java — лучше.
Re: Chained Control Flow Statements: break [, break]... [,continue]
От: Privalov  
Дата: 16.09.24 06:59
Оценка:
Здравствуйте, Caracrist, Вы писали:

Тот случай, когда goto приносит реальную пользу.
Re[2]: Chained Control Flow Statements: break [, break]... [,continue]
От: Darky Darkov Россия  
Дата: 16.09.24 08:45
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Здравствуйте, Caracrist, Вы писали:


P>Тот случай, когда goto приносит реальную пользу.


так в си-шарпе можно также!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.