Max*_*xpm 12 compiler-construction d language-design design-rationale
从D语言参考:
模块与源文件一一对应.模块名称是文件名,其路径和扩展名被剥离.
但是,模块名称仍然在文件中明确指定.
module foo;
Run Code Online (Sandbox Code Playgroud)
这有什么意义?如果模块对应于文件,为什么编译器不能从文件名中推断出它们的调用?
rat*_*eak 10
同一页有点下来(我的)
ModuleDeclaration设置模块的名称及其所属的包.如果不存在,则模块名称将被视为源文件名的相同名称 (剥离路径和扩展名).
这意味着如果你想将一个模块放在一个包中你必须明确指定它(就像Java的package声明)并且考虑到人们使用奇/外目录名的奇怪倾向,你不能依赖于检查source/src /导入路径
文件名和模块名称不必相同的原因是你可以使用.di进行导入,并使用-c开关使用实际代码的几个版本来创建.obj文件以链接不同版本(虽然摆弄导入路径更容易)