2017-06-21 48 views
0

编辑:最后它与它无关。我正在为类似情况的任何人提供答复。Julia - REPL在修改模块代码后不更新模块变量


我在一个月前发现了朱莉娅,从此便一直对它着了迷。 但是,似乎编译(或变量范围)对我来说仍然不清楚。

我有这个模块中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

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

如果遇到类似的情况,请务必查看所有模块/名称空间。使用不同的命名空间将是理想的,所以你没有任何冲突。