dlang-book/03-инструкция/README.md

50 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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-инструкции)