如何在D中使用公共导入
我试图在D中复制一种命名空间类型的模式。我希望每个文件有一个类,并且能够使用单个如何在D中使用公共导入,d,D,我试图在D中复制一种命名空间类型的模式。我希望每个文件有一个类,并且能够使用单个import语句来包含一组文件中的所有类 在我的根文件夹中,我有moduleExp.d import foo.module; import std.stdio; void main() { writeln("hello world"); auto quakk = new Quakk(); quakk.write(); } 在我的foo文件夹中,我有module1.d: module foo
import
语句来包含一组文件中的所有类
在我的根文件夹中,我有moduleExp.d
import foo.module;
import std.stdio;
void main()
{
writeln("hello world");
auto quakk = new Quakk();
quakk.write();
}
在我的foo文件夹中,我有module1.d:
module foo.module1;
import std.stdio;
class Quakk
{
public string name = "thename";
public void write()
{
writeln(this.name);
}
}
同样在foo文件夹中,我有module.d,我想我可以使用它将我的所有类模块公开导入其中,以便它们可以在根文件夹的moduleExp.d中使用
module foo.module;
public import foo.module1;
当我尝试在Windows上使用rdmd moduleExp
从根文件夹编译时,我得到错误:
moduleExp.d(1): Error: identifier expected following package
moduleExp.d(1): Error: ';' expected
Failed: ["dmd", "-v", "-o-", "moduleExp.d", "-I."]
我不确定我做错了什么。如果我将module.Exp.d中的第1行更改为
import foo.module1代码>然后一切正常。模块
是一个保留关键字,不应用作模块名称。您正在尝试的是dlang中名为包模块
的功能。查找文档
因此,基本上,您在文件夹foo
下有一个模块,它的名称应该是package.d
,您可以在其中公开导入foo中的模块和您想要的任何其他模块。例如:
module foo; // notice the module name is used
// for the package module and not foo.package
public import foo.module1;
public import foo.module2;
...
现在,当您想要导入包时,只需编写import foo
module
是一个保留关键字,您不应将其用作模块名称。您正在尝试的是dlang中名为包模块
的功能。查找文档
因此,基本上,您在文件夹foo
下有一个模块,它的名称应该是package.d
,您可以在其中公开导入foo中的模块和您想要的任何其他模块。例如:
module foo; // notice the module name is used
// for the package module and not foo.package
public import foo.module1;
public import foo.module2;
...
现在,当您想要导入包时,只需编写importfoo