如何使用D中函数的完整命名空间路径
我希望能够使用函数,例如如何使用D中函数的完整命名空间路径,d,D,我希望能够使用函数,例如writefln(),但不必在文件顶部添加import std.stdio 另一种解释方法是C++中的方法。你可以输入std::cout我认为你做不到。用C++中的命名空间< /COMP>语句,d中的代码>导入语句比 >多。它还取代了#include预处理器指令。您必须使用导入部件。但是,可以使用前面的完整模块路径来寻址方法/函数/任何内容。例如,如果导入std.stdio(并使用Phobos),则std.stdio.writefln(“…”)将有效。如果你有一个以上的函
writefln()
,但不必在文件顶部添加import std.stdio
另一种解释方法是C++中的方法。你可以输入std::cout我认为你做不到。用C++中的命名空间< /COMP>语句,d中的代码>导入语句比
#include
预处理器指令。您必须使用导入部件。但是,可以使用前面的完整模块路径来寻址方法/函数/任何内容。例如,如果导入std.stdio(并使用Phobos),则std.stdio.writefln(“…”)将有效。如果你有一个以上的函数叫做“写C++”,这是有用的。D也是一种模块化语言。D中的模块具有构造函数/析构函数。此外,D还有包。在此处阅读有关D中的模块和包的更多信息:
下面是该页面最有趣的部分:
模块具有一对一的功能
与源文件的通信。这个
module name是带有
剥离路径和扩展
模块自动提供
其内容的命名空间范围。
模块表面上相似
类别,但不同之处在于:
- 每个模块只有一个实例,它是静态的 分配的
- 没有虚拟表
- 模块不继承,它们没有超级模块,等等
- 每个文件只有一个模块
- 可以导入模块符号
- 模块总是在全局范围内编译,并且不受 周围的属性或其他修改器
我知道这是个老问题,但我看不出正确的答案,所以我还是要回答 静态输入 基本导入对程序很有效 具有相对较少的模块和 进口。如果有很多 导入时,可以启动名称冲突 发生在表中的名称之间 各种进口模块。单程 通过使用静态导入停止此操作。 静态导入需要使用 引用的完全限定名 模块名称:
静态导入标准stdio;
void main()
{
writefln(“hello!”);//错误,writefln未定义
std.stdio.writefln(“hello!”);//好的,writefln是完全限定的
}
您可以导入单独的函数/类(不确定语法):
import std.stdio: writef, writefln;