глупый программистский вопрос
Apr. 12th, 2003 03:04 pm(только программистам интересно, наверное)
Почему в процедуральных языках, как правило, нет оператора досрочного выхода из блока? Как break в C, но чтобы работал не только из циклов, а также внутри if-then или вообще любого блока.
Постоянно приходится делать глупые вложенные цепочки условий или некрасивые трюки типа while(1) и выполза по break'у (ну или, понятно, их аналоги в других языках).
Есть какая-то глубокая причина этому?
Почему в процедуральных языках, как правило, нет оператора досрочного выхода из блока? Как break в C, но чтобы работал не только из циклов, а также внутри if-then или вообще любого блока.
Постоянно приходится делать глупые вложенные цепочки условий или некрасивые трюки типа while(1) и выполза по break'у (ну или, понятно, их аналоги в других языках).
Есть какая-то глубокая причина этому?
no subject
Date: 2003-04-12 08:55 am (UTC)Re:
Date: 2003-04-12 08:59 am (UTC)Ситуация: тебе нужно сделать одну проверку; если она проходит, вторую; если эта проходит, третью, и если третья проходит, выполнить некую нетривиальную последовательность действий. Возможность проведения каждой провеки зависит от успеха предыдущей. Проверки относительно сложны, так что их не записать в качестве одного длинного if'а. Логика происходящего абсолютно прозрачна. Но тебе приходится делать три вложенных блока, или трюк с while(1), или выделять это всё в отдельную функцию, что вовсе необязательно имеет смысл делать.
это вообще просто
Date: 2003-04-12 09:00 pm (UTC)startup_code;
try
if not Cond1 then Exit;
if not Cond2 then Exit;
if not Cond3 then Exit;
do нетривиальную последовательность действий;
finally
cleanup_code;
end;
end;