我有不同的数学表达式集,必须在运行时进行评估.目前,通过用等效值和eval结果替换符号来完成任务.(可以通过任何现有的符号包完成)
现在,请参阅Julia-lang中模块的定义:
Julia中的模块是单独的变量工作空间,即它们引入了一个新的全局范围....模块允许您创建顶级定义(也称为全局变量),而不必担心当您的代码与其他人一起使用时的名称冲突.
由于Julia的功能可以做元数据,
我想知道是否可以在运行时创建匿名模块m=Module(),并将它们用作评估表达式的范围eval(m, :(a+b)).
但我根本找不到将变量加载到运行时模块的方法.虽然我可以得到结果:
julia> ex=:(module mo; a=1; b=4; end)
julia> eval(ex)
julia> eval(mo,:(a+b))
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用匿名模块的更多功能方式.
任何帮助.
小智 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |