我正在试图弄清楚是否可以不明确地使用包名称,例如 DataFrames etc或作为一个字符串变量,该变量具有此模块的名称 using 。我的测试代码是:
DataFrames
using
dependencies=["CSV", "DataFrames", "Plots"] for pkg in dependencies if !haskey(installed_packages, pkg) Pkg.add(pkg) end print(pkg) using .pkg end
它打开了 using .pkg (也尝试不带点,但有错误 TypeError: in using, expected Symbol, got a value of type Core.SlotNumber
using .pkg
TypeError: in using, expected Symbol, got a value of type Core.SlotNumber
因为你想做的是句法上的(改变后面项目的方式 using 被解释),您将需要 @eval 宏:
@eval
@eval using $(Symbol(pkg))
您可以检查它是否与的常规版本具有相同的语法表示 使用 ,这证明它是正确的:
使用
let pkg = "Plots" @assert :(using Plots) == :(using $(Symbol(pkg))) end