如何在运行时创建用户模块?

时间:2016-10-12 12:17:38

标签: module julia

我有一组不同的数学表达式,必须在运行时进行评估。目前,任务是通过用等效值替换符号并eval结果来完成的。 (可以通过任何现有的符号包完成)

现在,请参阅Julia-lang中的模块定义:

  

Julia中的模块是单独的可变工作空间,即它们引入   一个新的全局范围....模块允许您创建顶级定义(又名   全局变量)而不用担心代码时的名称冲突   与其他人一起使用。

用朱莉娅的力量去做元物,
我想知道是否可以在运行时m=Module()创建匿名模块,并将它们用作范围来评估表达式eval(m, :(a+b))
但我根本找不到将变量加载到运行时模块的方法。 虽然我可以得到结果:

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

我更喜欢使用匿名模块的功能方式 任何帮助。

1 个答案:

答案 0 :(得分: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