如何打印或捕获当前模块名称?
How do you print or capture the current module name?
我想在该源文件中打印我的主要源文件的模块名称。我试过这个:
import std.stdio;
import std.traits; // moduleName template
int main(string[] args)
{
writeln("The module name is: ",moduleName!moduleName);
return 0;
}
然而,它打印:
The module name is: std.traits
moduleName 模板描述为:
Get the module name (including package) for the given symbol.
所以moduleName!moduleName
应该给std.traits
.
只需将模板参数替换为任何其他符号即可获得它的模块名称。
例如writeln(moduleName!main)
.
另一种方法是使用 writeln(__MODULE__)
.
使用 __MODULE__
是正确的方法。这是一个特殊的标记,如 __FILE__
和 __LINE__
,这意味着它将在调用站点展开。参见 the specs for some example。
我想在该源文件中打印我的主要源文件的模块名称。我试过这个:
import std.stdio;
import std.traits; // moduleName template
int main(string[] args)
{
writeln("The module name is: ",moduleName!moduleName);
return 0;
}
然而,它打印:
The module name is: std.traits
moduleName 模板描述为:
Get the module name (including package) for the given symbol.
所以moduleName!moduleName
应该给std.traits
.
只需将模板参数替换为任何其他符号即可获得它的模块名称。
例如writeln(moduleName!main)
.
另一种方法是使用 writeln(__MODULE__)
.
使用 __MODULE__
是正确的方法。这是一个特殊的标记,如 __FILE__
和 __LINE__
,这意味着它将在调用站点展开。参见 the specs for some example。