Эта глава содержит обязательные определения всех инструкций языка D. D наследует внешний вид и функциональность языков семейства C – в нем есть привычные инструкции if
, while
, for
и другие. Наряду с этим D предлагает ряд новых интересных инструкций и некоторое усовершенствование старых. Если неизбежное перечисление с подробным описанием каждой инструкции заранее нагоняет на вас скуку, то вот вам несколько «отступлений» – любопытных отличий D от других языков.
Если вы желаете во время компиляции проверять какие-то условия, то вас, скорее всего, заинтересует инструкция static if
(см. раздел 3.4). Ее возможности гораздо шире, чем просто настройка набора флагов; тем, кто каким-либо образом использует обобщенный код, static if
принесет ощутимую пользу. Инструкция switch
(см. раздел 3.5) выглядит и действует в основном так же, как и ее тезка из языка C, но оперирует также строками, позволяя одновременно сопоставлять целые диапазоны. Для корректной обработки небольших конечных множеств значений пригодится инструкция final switch
(см. разд. 3.6), которая работает с перечисляемыми типами и заставит вас реализовать обработчик абсолютно для каждого возможного значения. Инструкция foreach
(см. разделы 3.7.4 и 3.7.5) помогает организовывать последовательные итерации; классическая инструкция for
предоставляет больше возможностей, но и более многословна. Инструкция mixin
(см. раздел 3.12) вставляет заранее определенный шаблонный код. Инструкция scope
(см. раздел 3.13) значительно облегчает написание корректного безотказного кода с правильной обработкой ошибок, заменяя сумбурную конструкцию try
/catch
/finally
, которой иначе вам пришлось бы воспользоваться.
Как уже говорилось (см. раздел 1.2), достаточно в конце выражения поставить точку с запятой, чтобы получить инструкцию:
a = b + c;
transmogrify(a + b);
При этом не любое выражение можно превратить в инструкцию. Если инструкция, которая должна получиться, не выполняет никакого действия, например:
1 + 1 == 2; // Абсолютная истина
то компилятор диагностирует ошибку.