В этот раз, мы решили возобновить публикацию переводов и объектом нашего перевода станет вот этот ресурс, на котором опубликованы интересные идиоматические (т.е. простые и понятные, часто используемые профессионалами, приемы программирования, выраженные через конструкции языка).
Переводы будут даваться порциями по одной идиоме или более за раз (в зависимости от их объема) и сегодня вас ждет небольшая порция хорошего кода на D.
В дополнения к однострочным // и многострочным (блокам) комментариям /* */, D поддерживает вложенные блоки комментариев, которые создаются с использованием /+ +/:
/+ Весь этот блок закомментирован. /** * Документированная функция */ void doStuff() { // бла бла бла } /+ Такие комментарии могут быть вложенными. +/ +/
Такие блоки очень удобны для комментирования больших кусков кода и являются некоторым эквивалентам выражениям #if 0 / #endif из C/C++.
Если вы предпочитаете оставить часть закоментированного кода в силе, то предпочтете использовать version(none).
version(none) { // Тут тоже весь блок закомментирован, но он все же парсится. /** * Документированная функция */ void doStuff() { // бла бла бла } }
В действительности, идентификатор none является специальным идентификатором версии, который не может быть установлен:
version = none; // Ошибка: идентификатор версии "none" не зарезервирован и она не может быть установлена
Примечания от авторов блога :
- В D есть различные комментарии, а не только те, которые были использованы в примерах. В частности, разные виды комментариев по разному понимаются встроенным в компилятор генератором документации ddoc, что позволяет использовать их как своеобразный язык разметки.
- Блок version(none) позволяет отключать блоки кода, фактически не позволяя компилироваться тем блокам которые заключены в такую конструкцию. Честно говоря, мы пока не вполне себе представляем, как это использовать, но думается, что это может быть использовано для сохранения некоторого старого кода, ну и как своеобразная документация.