怎样在在其它模块中创建变量?

我有一个模块,里面的代码怎样在Main模块中创建变量?

julia> module Foo
         Core.eval(Main, :(x = 1))
       end
Main.Foo

julia> using .Foo

julia> x
1

Thanks. Core和Main有什么区别?我尝试过Main.eval,失败了
既有Core.eval 也有Main.eval

1.0 刚改的,为了接口一致:

https://github.com/JuliaLang/julia/issues/27093

好的,我能再追问一个问题么, 在 模块 中 eval (以及 @eval 宏) 和 include 函数的解释我还是不理解,可以再解释一下么?

help?> eval
search: eval evalfile @eval @evalpoly bytesavailable readavailable TypeVar

  eval(expr)

  Evaluate an expression in the global scope of the containing module. Every
  Module (except those defined with baremodule) has its own 1-argument
  definition of eval, which evaluates expressions in that module.

还有

help?> @eval
  @eval [mod,] ex

  Evaluate an expression with values interpolated into it using eval. If two
  arguments are provided, the first is the module to evaluate in.

include 就和 C++ 的用法一样,相当于复制粘贴代码。

eval 是在运行时动态执行代码。

eval 是在其被包含的那个 module 里执行代码,想在其它 module 里执行代码,用 Core.eval(module_name, expr)

@eval 是个方便使用的宏,一个参数的时候默认调用 eval, 两个的时候调用 Core.eval

1 个赞