使用/进口Julia元编程

Šim*_*lík 2 metaprogramming julia

我想基于参数来评估导入模块的表达式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
Run Code Online (Sandbox Code Playgroud)

一种可能性是Expr直接使用构造函数,如下所示:

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

julia> eval(Expr(:using, expr...))
Run Code Online (Sandbox Code Playgroud)

但是有没有其他的,也许更直接的方式,而不需要构建Expr

hck*_*ckr 5

宏名称之后的每个空格分隔的字符组被视为单独的参数.相反,你应该在paranthesis之间编写表达式.

@eval(using $expr)
Run Code Online (Sandbox Code Playgroud)