Подтвердить что ты не робот

Почему модули явно указаны в файлах?

Из Ссылка на язык D:

Модули имеют взаимно однозначное соответствие исходным файлам. Имя модуля - это имя файла с удаленным контуром и расширением.

Имена модулей по-прежнему указаны в файлах явно.

module foo;

В чем смысл этого? Если модули соответствуют файлам, почему компилятор не может вывести то, что они вызывают из имен файлов?

4b9b3361

Ответ 1

та же самая страница немного вниз (emph mine)

МодульDeclaration устанавливает имя модуля и какой пакет он принадлежит. Если отсутствует, имя модуля принимается за одно имя (лишенный пути и расширения) имени исходного файла.

это означает, что если вы хотите поместить модуль в пакет, вы должны явно указать его (например, объявление Java package) и учитывая странную склонность людей использовать имена нечетных/иностранных каталогов, вы не можете полагаться при проверке источника /src/import в пути

причина, по которой имя файла и имя модуля не должно быть одинаковым, может быть таким, что вы можете использовать .di для импорта и использовать несколько версий фактического кода с помощью ключа -c для создания файла .obj для связывания различные версии (хотя вождение с пути импорта более удобно для этого)

Ответ 2

Он может это сделать. Вам не нужно указывать имя модуля. Тем не менее, вы можете указать имя модуля, которое позволяет вам дать ему совершенно другое имя, если хотите. Ярким примером этого является то, что имя файла не является допустимым именем модуля (например, my-module.d). В таком случае вы можете использовать объявление module, чтобы присвоить ему действительное имя модуля (например, my_module).

Общепринятой практикой является размещение имени модуля в верхней части файла, и, как правило, имя модуля совпадает с именем файла, но при условии, что имя модуля не совпадает с именем файла, увеличивается гибкость.

Лично я обычно считал бы плохую идею называть модуль чем-то другим, кроме имени файла, и я бы сказал, что если файл не является допустимым именем модуля, то имя файла следует изменить так, чтобы это одно, но, по-видимому, было решено, что дополнительная гибкость, позволяющая им не соответствовать, стоила того. Итак, это на языке.