Сталкиваюсь с ситуациями когда несколько вложенных циклов и чтобы досрочно прекратить цикл на несколько уровней вверх необходимо создавать дополнительные переменные-флаги и по ним выходить из циклов по очереди через break/continue.
Я бы не отказался видеть команду break/continue дополненной переменной цикла по которой надо выйти из цикла
пример:
For var i:=0 to 10 do
begin
For var k:=0 to 10 do
begin
break i;
end;
end;
Мне тоже жаль. Но что делать? Одна надежда, что время все поставит на свои места. Как ни странно, уже почти с десяток подобных предложений был вначале отвергнут, но позднее все же реализован в том или ином виде. Тут, скорее всего, работает принцип, что идея должна вначале “вылежаться” ))
Добрый день всем коллегам. У меня тут другое мнение. Лучше пользоваться операторными скобками Begin … End, чем оператора goto. В случае оператора goto, если переменная определено в после For, то потом как будеть, в память остается?
Примеры с операторными скобками Begin … End:
Если выйти из первого цикла:
For Var h:=1 to 20 do Begin
For Var j:=1 to 12 do
PrintLn(h,j); break end
Если выйти из второго цикла:
For Var h:=1 to 20 do
For Var j:=1 to 12 do Begin
PrintLn(h,j); break end
Для других видов оператора цикла тоже такие примеры.
What about integrating new syntax improvements from Modula-2 and Modula-3? You can get rid of a lot of begin and end. Btw, there is a Russian guy working as contributor on CM3 project on Github.