diff --git a/03-инструкция/README.md b/03-инструкция/README.md index e69de29..26a9889 100644 --- a/03-инструкция/README.md +++ b/03-инструкция/README.md @@ -0,0 +1,49 @@ +# 3. Инструкции + +- [3.1. Инструкция-выражение](#3-1-инструкция-выражение) +- [3.2. Составная инструкция]() +- [3.3. Инструкция if]() +- [3.4. Инструкция static if]() +- [3.5. Инструкция switch]() +- [3.6. Инструкция final switch]() +- [3.7. Циклы]() + - [3.7.1. Инструкция while (цикл с предусловием)]() + - [3.7.2. Инструкция do-while (цикл с постусловием)]() + - [3.7.3. Инструкция for (цикл со счетчиком)]() + - [3.7.4. Инструкция foreach (цикл просмотра)]() + - [3.7.5. Цикл просмотра для работы с массивами]() + - [3.7.6. Инструкции continue и break]() +- [3.8. Инструкция goto (безусловный переход)]() +- [3.9. Инструкция with]() +- [3.10. Инструкция return]() +- [3.11. Обработка исключительных ситуаций]() +- [3.12. Инструкция mixin]() +- [3.13. Инструкция scope]() +- [3.14. Инструкция synchronized]() +- [3.15. Конструкция asm]() +- [3.16. Итоги и справочник]() + +Эта глава содержит обязательные определения всех инструкций языка 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`, которой иначе вам пришлось бы воспользоваться. + +[В начало ⮍](#3-инструкции) + +## 3.1. Инструкция-выражение + +Как уже говорилось (см. раздел 1.2), достаточно в конце выражения поставить точку с запятой, чтобы получить инструкцию: + +```d +a = b + c; +transmogrify(a + b); +``` + +При этом не любое выражение можно превратить в инструкцию. Если инструкция, которая должна получиться, не выполняет никакого действия, например: + +```d +1 + 1 == 2; // Абсолютная истина +``` + +то компилятор диагностирует ошибку. + +[В начало ⮍](#3-1-инструкция-выражение) [Наверх ⮍](#3-инструкции)