Оператор case без begin/end в Delphi
Перевод поста The case of a missing begin/endopen in new window.
Delphi никогда не перестаёт удивлять меня... Вы знали что это правильный синтаксис?
case a of
0: Writeln(0);
else
Writeln('else');
Writeln(a);
end;
1
2
3
4
5
6
2
3
4
5
6
Этот код компилируется и работает точно как следующий фрагмент.
case a of
0: Writeln(0);
else begin
Writeln('else');
Writeln(a);
end;
end;
1
2
3
4
5
6
7
2
3
4
5
6
7
Я лично никогда бы не убрал begin/end
внутри оператора case/else
, но не все согласяться с этим. Я нашёл такой пример в очень (ОЧЕНЬ!) старом кода (он был написан на Delphi 2) и я был довольно удивлён, что он компилируется.
Anton Alisov предложил форматировать первый пример так:
case a of
0: Writeln(0);
else
Writeln('else');
Writeln(a);
end;
1
2
3
4
5
6
2
3
4
5
6
Я думаю так код выглядит более понятно.