我在数组中有包名称,试图在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 会抛出错误"无法并列字符串文字"。请帮帮我!
您可以使用符号和@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
(即像x=3; b = 5x
中的5
(。字符串文本并置是 Julia 1.0 中的语法错误。即使这不是语法错误,我也不记得它会用于运行表达式。
文档中的元编程部分,了解有关从 Julia 中创建和操作代码的更多信息。