Python源文件具有使用模式作为模块或独立程序(工具)的良好属性
if __name__ == "__main__":
是否有可能为D模块源文件获得相同的行为?
答案 0 :(得分:6)
(仅限Unix)
您可以使用设置version
的shebang行来启用main
功能:
#!/path/to/rdmd --shebang -version=run
version(run) void main() {}
使文件可执行(chmod +x foo.d
)并像程序(./foo.d
)一样运行。
请务必使用唯一的版本标识符(与此处不同)。也许以某种形式包含完全限定的模块名称,或者使用UUID。
答案 1 :(得分:5)
这取决于你想要做什么。 D程序在所有模块中只需要一个main
函数作为入口点,因此不存在Python中的隐式方法。 D方法是将可执行文件创建为包含main
的单独模块,并导入其他模块。
但是如果您只是想进行测试,那么您应该将可执行代码放在unittest
块中(没有main
),然后您可以使用rdmd -main -unittest scratch.d
运行该文件,这会为你添加一个存根main
。
如果确实想要创建一个双用途模块(这不是真正的D路),您可以将main
放在一个唯一的version
块中:
module scratch; // file scratch.d
import std.stdio;
void foo(){ writeln("FOO"); }
version(scratchExe) {
void main() {
foo();
}
}
然后使用dmd scratch.d -version=scratchExe
编译可执行版本。
答案 2 :(得分:4)
void foo(){
//...
}
version(fooMain){
pragma(startaddress, foo);
}