Julia使用/imports进行元编程

Julia使用/imports进行元编程,julia,metaprogramming,Julia,Metaprogramming,我想根据参数expr计算导入模块的表达式。到目前为止,我提出了: julia> expr = :(Base.Threads) julia> @eval using $expr ERROR: TypeError: import or using: expected Symbol, got Expr Stacktrace: [1] eval(::Module, ::Expr) at ./sysimg.jl:23 一种可能是直接使用Expr构造函数,如下所示: julia> e

我想根据参数
expr
计算导入模块的表达式。到目前为止,我提出了:

julia> expr = :(Base.Threads)

julia> @eval using $expr
ERROR: TypeError: import or using: expected Symbol, got Expr
Stacktrace:
 [1] eval(::Module, ::Expr) at ./sysimg.jl:23
一种可能是直接使用
Expr
构造函数,如下所示:

julia> expr = [:Base, :Threads]
2-element Array{Symbol,1}:
 :Base   
 :Threads

julia> eval(Expr(:using, expr...))

但是有没有其他更直接的方法,而不需要构造
Expr

宏名称后的每个空格分隔字符组都被视为单独的参数。相反,您应该将表达式写在括号之间

@eval(using $expr)