我有一组不同的数学表达式,必须在运行时进行评估。目前,任务是通过用等效值替换符号并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))
我更喜欢使用匿名模块的功能方式 任何帮助。
答案 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