【问题标题】:Julia metaprogramming with using/imports使用/导入的 Julia 元编程
【发布时间】:2018-09-12 11:18:16
【问题描述】:

我想根据参数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

【问题讨论】:

    标签: julia metaprogramming


    【解决方案1】:

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

    @eval(using $expr)
    

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 2023-03-18
      • 2021-02-21
      • 2021-03-03
      • 2014-11-22
      • 2016-09-10
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      相关资源
      最近更新 更多