假设我有一些 Julia 模块 main
在单个文件“main.jl”中
module main
export tester,add
a=1
function hi()
return "hi"
end
function tester()
return hi()
end
function add()
return a+1
end
end
现在假设我想把它分成两个文件,其中一个包括辅助函数,如 hi()
,像这样:module auxillary
function hi()
return "hi"
end
end
并使用 include
将 auxillary.jl 中的函数复制/粘贴到主文件中:module main
include("auxillary.jl")
export add,tester
a=1
function tester()
return hi()
end
function add()
return a+1
end
end
然后拨打 tester()
从 main 给出错误“hi()
未定义”。是 include
不够用还是我还得用using
?其次,假设我想移动
add()
到 auxillary.jl,但保留全局变量 a
在 main.jl 中。然后我会调用add()
来自 main.jl。我该怎么做?
最佳答案
您需要的代码布局如下:
module MyModule
# this is equal to do doing `include` here
module Auxillary
function hi()
return "hi"
end
function add()
return Main.MyModule.a+1
end
end
export add,tester
using Main.MyModule.Auxillary
a=1
function tester()
return Auxillary.hi()
end
end
这可以运行为:julia> using Main.MyModule
julia> MyModule.Auxillary.add()
2
julia> MyModule.tester()
"hi"
解释每个
module
创建它的命名空间,所以让它运行的技巧是正确指出你需要哪个命名空间。当此代码在控制台中运行时,modele
MyModule
成为 Main
的子模块和 Auxillary
是 MyModule
的子模块.
关于julia - 在 Julia 中使用 include 和全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68433384/