Да, в D можно делать те же вещи, что и в Javascript, и синтаксисы тоже очень похожи - как вы можете видеть из своего рабочего кода (как я сказал в комментарии, причина, по которой вы этого не делаете)увидеть что-нибудь просто означает, что ваша функция ничего не делала!)
Вы также можете сделать модуль раскрытия модуля, и, возможно, стандартная библиотека D делает это с помощью того, что она называет «типами волдеморта» - закрытый тип, объявленный внутрифункция, которая возвращается наружу. Но делать это точно так же, как в Javascript, не нужно, поскольку D имеет встроенные модули, классы и т. Д.!
Я использовал шаблон IIFE в D в нескольких местах, чтобы разрешить операторы, где грамматика допускает только выражение, напримерв предложении цикла или конструкции mixin
. Также полезно при инициализации статических переменных иногда. Это простой способ выполнить сложную работу в одном назначении.
Но когда дело доходит до сокрытия деталей, так как D имеет модули, а его модули имеют private
членов, обычно проще и приятнее просто использоватьэто.