使用 using/imports 的 Julia 元编程
Julia metaprogramming with using/imports
我想根据参数 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
?
宏名称后的每个 space 定界字符组被认为是一个单独的参数。相反,您应该只将表达式写在括号之间。
@eval(using $expr)
我想根据参数 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
?
宏名称后的每个 space 定界字符组被认为是一个单独的参数。相反,您应该只将表达式写在括号之间。
@eval(using $expr)