我试图在D中复制名称空间类型的模式.我希望每个文件有一个类,并且能够使用单个import语句来包含一组文件中的所有类.
在我的根文件夹中我有moduleExp.d
import foo.module;
import std.stdio;
void main()
{
writeln("hello world");
auto quakk = new Quakk();
quakk.write();
}
Run Code Online (Sandbox Code Playgroud)
在我的foo文件夹中,我有module1.d:
module foo.module1;
import std.stdio;
class Quakk
{
public string name = "thename";
public void write()
{
writeln(this.name);
}
}
Run Code Online (Sandbox Code Playgroud)
同样在foo文件夹中,我有module.d,我认为我可以使用它来公开导入我的所有类模块,以便它们可以在根文件夹的moduleExp.d中使用.
module foo.module;
public import foo.module1;
Run Code Online (Sandbox Code Playgroud)
当我尝试从根文件夹在Windows上编译时rdmd moduleExp,我收到错误:
moduleExp.d(1): Error: identifier expected following package
moduleExp.d(1): Error: ';' expected
Failed: ["dmd", "-v", "-o-", "moduleExp.d", "-I."]
Run Code Online (Sandbox Code Playgroud)
我不确定我在这里做错了什么.如果我在module.Exp.d中更改第1行,import foo.module1;那么一切正常.
module是一个保留的关键字,您不应将其用作模块名称.而你正在尝试做的事情作为dlang中的一个特性被称为package modules.查看http://dlang.org/module.html以获取文档.
所以基本上,你在文件夹下有一个模块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;
...
Run Code Online (Sandbox Code Playgroud)
现在当你想要导入包时,只需写import foo.
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |