Юлия метапрограммирование с использованием / импорт - PullRequest
0 голосов
/ 12 сентября 2018

Я хотел бы оценить выражение, которое импортирует модуль, на основе аргумента 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?

1 Ответ

0 голосов
/ 12 сентября 2018

Каждая группа символов, разделенных пробелом, после имени макроса считается отдельным аргументом. Вместо этого вы должны просто написать выражение в скобках.

@eval(using $expr)
...