2017-06-21 8 views
0

EDIT:それはそれとは関係ありません。私は似たような状況で誰にでも答えています。ジュリアREPLは、モジュールのコードを変更した後にモジュール変数を更新しません。


私はジュリアを1ヶ月前に発見し、それ以来それに魅了されています。 しかし、コンパイル(または可変スコープ)はまだ私にとっては明らかではないようです。

私はplots.jlで、このモジュールがあります。

module plottinghhkp 

instance_path = "somestring" 

function dosomething() 
    ... 
end 

... 
end 

をしてから

julia> include("plots.jl") 
... 
julia> hhkplot.instance_path 
julia> "somestring" 

私はその後、instance_pathを変更し、再インポートもう一度includeを使用して、モジュールの機能を実行するために、REPLでそれを含むが、 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()で新鮮な環境を作成することは決して終わりません。

どうしてですか?ジュリアをプリコンパイルせずに明示的にロードする必要がありますか、または__precompile__(false)をモジュールに追加する必要はありますか?それとも、可変スコープに関するものなのでしょうか?

ありがとうございました。

答えて

0

私はこの問題を解決できました。もちろん、それは編集について何もしていませんでした。これは名前空間の問題でした。同じ名前の下に2つの変数がありましたが、それぞれが異なる名前空間を持っていました。そのうちの1つがモジュールにラップされていたからです。

同様の状況に遭遇した場合は、すべてのモジュール/名前空間を確認してください。別の名前空間で作業することは理想的なので、衝突はありません。

関連する問題