2016-10-12 8 views
3

実行時に評価する必要があるさまざまな数式があります。現在、シンボルは同等の値に置換され、結果はevalになります。ジュリア・ラングのモジュールの定義を参照して、今すぐ実行時にユーザーモジュールを作成する方法は?

を(既存のシンボリックパッケージによって行うことができる):彼らは 新しいグローバルスコープを導入すなわちジュリアで

モジュールは、別々の変数のワークスペースです。 ...あなたのコード が他の誰かと一緒に使用されているとき、モジュールは名前の競合を心配することなくトップレベルの定義(別名 グローバル変数)を作成することを可能にします。

とメタ物事を行うにはジュリアのパワーと、
実行時m=Module()で匿名のモジュールを作成し、表現eval(m, :(a+b))を評価するためのスコープとしてそれらを使用することが可能である場合、私は思ったんだけど。
しかし、変数をランタイムモジュールにロードする方法を見つけることができません。 私は結果を得ることができますが:私は匿名のモジュールを使用して、より機能的な方法を好む

julia> ex=:(module mo; a=1; b=4; end) 
julia> eval(ex) 
julia> eval(mo,:(a+b)) 


ヘルプ。

答えて

5

これは動作します:

julia> m=Module() 
anonymous 

julia> eval(m, :(a=5)) 
5 

julia> m.a 
5 

julia> eval(m, :(a)) 
5 

julia> eval(m, :(2a)) 
10 
関連する問題