Julia - REPL在修改模块代码后不会更新模块变量

时间:2017-06-21 20:45:56

标签: compilation julia

编辑:最后它与它无关。我在类似的情况下回答任何人。

我一个月前发现了朱莉娅,从那以后就对它很着迷。 但是,似乎编译(或可变范围)对我来说仍然不明确。

我在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)添加到模块中?或者它是关于变量范围的东西吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。当然,它与编译无关。这是命名空间问题。在同一个名称下有两个变量,但每个变量都有一个不同的命名空间,因为其中一个变量包裹在一个模块周围。

如果遇到类似情况,请务必查看所有模块/命名空间。使用不同的命名空间是理想的,因此您不会发生任何冲突。