首页 > 解决方案 > 如何在 Julia 中运行构造命令?

问题描述

我在数组中有包名称,尝试使用 deps.jl 中的以下代码执行“使用 <PACKAGE_NAME>”:

#! /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,抛出错误“不能并列字符串文字”。请帮我!

标签: julia

解决方案


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

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

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

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

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

有关在 Julia 中创建和操作代码的更多信息,请参阅Julia 文档中的元编程部分。


推荐阅读