NOTE: 请参考用户1712368的(Jameson Nash,Julia dev)回答,这个discussion在julia-users邮件列表和Julia manual的这个条目中,要知道为什么这是 not 正确答案 .
这是使用Julia版本0.3.4的多重导入表达式的样子:
julia> parse("import Foo, Bar")
:($(Expr(:toplevel, :($(Expr(:import, :Foo))), :($(Expr(:import, :Bar))))))
julia> dump(ans)
Expr
head: Symbol toplevel
args: Array(Any,(2,))
1: Expr
head: Symbol import
args: Array(Any,(1,))
1: Symbol Foo
typ: Any
2: Expr
head: Symbol import
args: Array(Any,(1,))
1: Symbol Bar
typ: Any
typ: Any
这是一个以编程方式执行此操作的宏,它需要 modules 参数,该参数可以是 :call 或 :vcat Expr 或 Symbol ,必须评估为 Vector{Symbol} :
julia> macro dynamic_import(modules)
(modules = eval(modules))::Vector{Symbol}
ex = Expr(:toplevel)
for m in modul