Nor*_*löw 4 python executable module d
Python源文件具有使用该模式既可以作为模块也可以作为独立程序(工具)的良好属性
if __name__ == "__main__":
Run Code Online (Sandbox Code Playgroud)
是否有可能为D模块源文件获得相同的行为?
小智 6
(仅限Unix)
您可以使用设置version启用main功能的shebang行:
#!/path/to/rdmd --shebang -version=run
version(run) void main() {}
Run Code Online (Sandbox Code Playgroud)
使您的文件可执行(chmod +x foo.d)并像程序(./foo.d)一样运行它.
请务必使用唯一的版本标识符(与此处不同).也许以某种形式包含完全限定的模块名称,或者使用UUID.
这取决于你想要做什么.AD程序main在所有模块中只需要一个函数作为入口点,因此不存在Python中的隐式方法.D方法是将可执行文件创建为包含a 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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后编译可执行版本dmd scratch.d -version=scratchExe.