Почему модули явно названы в файлах?
Из ссылки на язык D:
Модули имеют непосредственное соответствие с исходными файлами. Имя модуля - это имя файла с удаленным путем и расширением.
Имена модулей по-прежнему указываются в файлах явно.
module foo;
какой в этом смысл? Если модули соответствуют файлам, почему компилятор не может определить, как они называются из имен файлов?
2 ответа
Та же страница немного вниз (emph моя)
ModuleDeclaration устанавливает имя модуля и к какому пакету он принадлежит. Если отсутствует, то имя модуля считается тем же именем (без указания пути и расширения) имени исходного файла.
это означает, что если вы хотите поместить модуль в пакет, вы должны явно указать его (как в Java package
декларации) и учитывая странную склонность людей использовать нечетные / иностранные имена каталогов, на которые вы не можете полагаться при проверке источника /src/import в пути
причина того, что имя файла и имя модуля не обязательно должны быть одинаковыми, может заключаться в том, что вы можете использовать.di для импорта и использовать несколько версий фактического кода, используя ключ -c для создания файла.obj для связывания различных версий. (хотя для этого удобнее использовать путь импорта)
Это может сделать вывод. Вам не нужно давать имя модуля. Тем не менее, вы можете дать имя модуля, что позволит вам дать ему совершенно другое имя, если хотите. Ярким примером этого является случай, когда имя файла не является допустимым именем модуля (например, my-module.d). В таком случае вы можете использовать module
объявление, чтобы дать ему правильное имя модуля (например, my_module).
Обычной практикой является размещение имени модуля в верхней части файла, и обычно имя модуля совпадает с именем файла, но возможность сделать так, чтобы имя модуля не точно совпадало с именем файла, повышает гибкость.
Лично я бы вообще считал плохой идеей называть модуль чем-либо, кроме имени файла, и я бы сказал, что если файл не является допустимым именем модуля, то имя файла следует изменить так, чтобы оно было единым., но, видимо, было решено, что дополнительная гибкость, позволяющая им не соответствовать друг другу, стоила того. Итак, это на языке.