我在一个数组中包含程序包名称,试图在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引发错误“无法将字符串文字并置”。 请帮帮我!
答案 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。