Function 在Julia中声明主函数/入口点

Function 在Julia中声明主函数/入口点,function,julia,code-structure,Function,Julia,Code Structure,在Julia程序中是否有一种现成的或惯用的方法来声明入口点(即C语言中的main,或者Python中的if\uuu name\uuu==“\uu main”构造) 这似乎是一个重要的功能,以便编写更大的结构化代码,而这些代码不会在交互模式中使用,但我找不到任何关于如何在Julia中实现这一点的提示,如果有的话(一个可能的逃生路线可能是编写一个任意函数作为main,然后在主模块末尾的顶层调用它一次,但这并不优雅,甚至可能没有效率).TIA.您可以编写一个main函数,而不是从文件的顶层调用它。要从

在Julia程序中是否有一种现成的或惯用的方法来声明入口点(即C语言中的
main
,或者Python中的
if\uuu name\uuu==“\uu main”
构造)


这似乎是一个重要的功能,以便编写更大的结构化代码,而这些代码不会在交互模式中使用,但我找不到任何关于如何在Julia中实现这一点的提示,如果有的话(一个可能的逃生路线可能是编写一个任意函数作为
main
,然后在主模块末尾的顶层调用它一次,但这并不优雅,甚至可能没有效率).TIA.

您可以编写一个
main
函数,而不是从文件的顶层调用它。要从命令行运行程序,您可以使用
julia-L file.jl-e'main(一些,args)“
-L
开关告诉Julia加载您的文件,然后
-e
告诉它计算以下表达式。还有一个
-e
开关计算并打印(我认为它是“大声计算”,因为大写字母似乎“大声”)

与C的
main
或Python的
相比,如果
,这有两个优点:

  • 你不必有一个单一的入口点!你可以在加载文件后计算任何表达式,所以你不必把所有的命令行功能塞进一个函数中

  • 您编写的调用使用完整的Julia语法,因此通常可以避免解析参数。像
    -e main(53)
    这样的调用使用整数53调用
    main
    ,而不需要
    atoi
    内部
    main


  • 加载模块时,如果它们有一个名为
    \uuuuu init\uuuuuuuuuu
    的函数,就会调用它。这有帮助吗?

    如果你想做python中的
    if{uuuuuuu name\uuuuuuuuu==“\uuuuuuuuuuu main\uuuuuuuuuuuuuuuu”的习惯用法,我发现

    if !isdefined(Base, :active_repl)
        main()
    end
    
    这就是诀窍


    我经常发现自己希望能够将我的主文件加载到REPL中,并有选择地插入一些函数,而无需调用main或将CLI装订到主要用作库模块的模块上,因此我非常喜欢python中的这一技巧。

    也许是一些咒语?我建议搜索Yes,这似乎更多或更多少了我想要的,谢谢。