我一个月前发现了朱莉娅,从那以后就对它很着迷。 但是,似乎编译(或可变范围)对我来说仍然不明确。
我在plots.jl
:
module plottinghhkp
instance_path = "somestring"
function dosomething()
...
end
...
end
然后将其包含在REPL中以运行模块函数
julia> include("plots.jl")
...
julia> hhkplot.instance_path
julia> "somestring"
然后我修改instance_path
,然后再次使用include
重新导入,但instance_path
显示旧值而不是新值:
julia> include("plots.jl")
...
julia> plottinghhkp.instance_path
"somestring"
我的解决方案是将变量重命名为instancepath
,以便创建新符号,但是,自动填充功能现在显示:
julia> plottinghhkp.
instance_path instancepath
julia> plottinghhkp.instancepath
"newvalue"
julia> plottinghhkp.instance_path
"somestring"
当模块中不再存在instance_path符号时。
创建workspace()
的新环境永远不会结束。
为什么会这样?我是否需要在没有预编译的情况下显式加载Julia,或者将__precompile__(false)
添加到模块中?或者它是关于变量范围的东西吗?
感谢。
答案 0 :(得分:0)
我设法解决了这个问题。当然,它与编译无关。这是命名空间问题。在同一个名称下有两个变量,但每个变量都有一个不同的命名空间,因为其中一个变量包裹在一个模块周围。
如果遇到类似情况,请务必查看所有模块/命名空间。使用不同的命名空间是理想的,因此您不会发生任何冲突。