如何在Julia中运行构造的命令?

时间:2019-04-26 04:02:01

标签: julia

我在一个数组中包含程序包名称,试图在deps.jl中使用以下代码执行“使用”:

#! /opt/julia/julia-1.1.0/bin/Julia
packages =["MbedTLS","HTTP"]
for package in packages
try
("using "package) 
cath err
println("$err")
end
end

执行时,$ / home / julia / deps.jl引发错误“无法将字符串文字并置”。 请帮帮我!

1 个答案:

答案 0 :(得分:3)

您可以使用符号和@eval宏来执行此操作。 @eval宏在顶层运行给定的表达式。

packages = [:MbedTLS, :HTTP] # use symbols instead of strings
for package in packages
    try
        @eval(using $package) 
    catch err
        println("$err")
    end
end

如果由于某种原因需要使用字符串,可以先将其转换为Symbol,然后将@eval与结果一起使用。

packages = ["MbedTLS", "HTTP"]
for package in packages
    try
        @eval(using $(Symbol(package))) 
    catch err
        println("$err")
    end
end

"using "package尝试创建字符串文字“ using”以将其与变量package并置(即类似于5中的x=3; b = 5x)。 Julia 1.0中的字符串文字并置is a syntax error。即使这不是语法错误,我也不记得它会用于 running 表达式。

有关在Julia内部创建和处理代码的更多信息,请参见Julia文档中的Metaprogramming section