julia - `abspath(PROGRAM_FILE) == @__FILE__` 有什么作用?

标签 julia

鉴于此代码:

function main()
    println("hello")
end

if abspath(PROGRAM_FILE) == @__FILE__
    main()
end
最后一部分是做什么的,它是如何工作的?这些变量在哪里定义的?

最佳答案

PROGRAM_FILE是一个全局常量,定义为包含从命令行传递给正在执行的 Julia 进程的脚本名称的字符串(我认为是 C 术语中 argv 的第一个元素)。@__FILE__是一个扩展到它被扩展的文件名的宏。
显示的组合是 Python 的 if __name__ == '__main__' 的 Julia 变体。 : 当文件作为脚本运行时,PROGRAM_FILE将包含脚本名称,等于当前文件,以及 main将被调用。当文件被包含或从其他地方导入时,PROGRAM_FILE将包含使用当前文件的任何脚本的名称,并与当前文件名不同。

关于julia - `abspath(PROGRAM_FILE) == @__FILE__` 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65721041/

相关文章:

julia - Julia 中使用 Plots.jl 的多个直方图

arrays - 给定每列的选择索引,从 2D 数组构造 1D 数组

centos - Julia + Centos - Arpack 无法构建

arrays - 在 Julia 中,如何创建唯一的空可变对象数组?

fortran - 在 Windows 上从 Julia (0.6.2) 调用 Fortran 函数的错误结果

parallel-processing - 采取的功能!放!和 Julia 中的 channel

julia - 从特定方法调用更通用的方法

dataframe - Julia 中的矢量化 "in"函数?

julia - 在 Julia 中,为什么 @printf 是宏而不是函数?

string - 如何在 julia 中剥离字符串