`abspath(PROGRAM_FILE) == @__FILE__` 的作用是什么?

DVN*_*old 5 julia

鉴于此代码:

function main()
    println("hello")
end

if abspath(PROGRAM_FILE) == @__FILE__
    main()
end
Run Code Online (Sandbox Code Playgroud)

最后一部分的作用是什么?它是如何工作的?这些变量是在哪里定义的?

phi*_*ler 5

PROGRAM_FILE是一个全局常量,定义为包含从命令行传递到正在执行的 Julia 进程的脚本名称的字符串(argv我认为是 C 术语中的第一个元素)。

@__FILE__是一个宏,扩展为它所扩展的文件的名称。

显示的组合是 Python 的 Julia 变体if __name__ == '__main__':当文件作为脚本运行时,PROGRAM_FILE将包含脚本名称,等于当前文件,并将main被调用。当文件被包含或从其他地方导入时,PROGRAM_FILE将包含使用当前文件的任何脚本的名称,并且与当前文件名不同。