如何在 OCaml 中模拟这个 Python 习惯用法?
if __name__=="__main__":
main()
See 罗塞塔代码 http://rosettacode.org/wiki/ScriptedMain#Python其他编程语言的示例。
Ocaml 中没有主模块的概念。程序中的所有模块都是平等的。所以你不能直接翻译这个Python习惯用法。
Ocaml 中通常的方法是有一个单独的文件,其中包含对main
,以及诸如命令行解析之类的其他内容,这些内容仅在独立的可执行文件中才有意义。将代码链接为库时,请勿包含该源文件。
有一种方法可以获取模块的名称,但它相当黑客,因为它仅用于调试。它违反了通常的假设,即您可以重命名模块而不改变其行为。如果你依赖它,其他阅读你代码的程序员就会诅咒你。此方法仅供娱乐,请勿在现实生活中使用。
let name_of_this_compilation_unit =
try assert false with Assert_failure (filename, _, _) -> filename
您可以将编译单元的名称与Sys.executable_name
or Sys.argv.(0)
。请注意,这实际上与 Python 习惯用法不同,Python 习惯用法不依赖于具有特定名称的顶级脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)