从同级模块导入功能

时间:2018-07-03 17:57:09

标签: julia

我有一个名为MAIN的软件包。在src文件夹中,我有以下文件:

src/
    MAIN.jl
    utils.jl
    models.jl

在MAIN.jl内部,我有以下内容:

module MAIN

include("models.jl")
include("utils.jl")

end

utils.jl的内容是:

module utils
export foo
function foo()
    return 1
end
end

然后我要在models.jl文件中的函数内使用foo函数。 现在我有以下内容:

module models
using ..utils

export bar
function bar()
   return foo()
end


end # module

但是当我运行import MAIN时,出现以下错误:LoadError: LoadError: UndefVarError: utils not defined

那么,在这种设置下,如何将foo函数导入到models.jl文件中?

1 个答案:

答案 0 :(得分:0)

问题的原因是import呼叫的顺序错误。 import语句按顺序求值,这意味着在评估utils文件时未定义models.jl模块。要解决此问题,请使用以下导入顺序:

module MAIN

include("utils.jl")
include("models.jl")

end