Вы можете использовать символы и @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. Даже если бы это не была синтаксическая ошибка, я не помню, чтобы она использовалась для выполнения выражений.
См. раздел метапрограммирования в документации Julia для получения дополнительной информации о создании и манипулировании кодом внутри Julia.