2017-06-21 51 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

我設法解決了這個問題。當然,編譯沒有關係。這是一個命名空間問題。在同一個名字下有兩個變量,但每個都有不同的名稱空間,因爲其中的一個被包裹在一個模塊中。

如果遇到類似的情況,請務必查看所有模塊/名稱空間。使用不同的命名空間將是理想的,所以你沒有任何衝突。