我正在创建一个模块A,该模块可以扩展模块B中定义的功能(这意味着模块A可以具有using B
或import B
)。但是,除非用户已经将B添加到他们的系统中,否则我不想加载模块B。示例代码如下:
module A
struct MyStruct{T}; end
if(#= module B exists =#)
import B: myFn
function myfn(x::MyStruct)
# ...
end
end
一个类似的例子是在C ++头文件中使用#ifndef ... #define ... #endif
。我有办法检查用户是否添加了B,这是在构建模块时使用的良好模式吗?
答案 0 :(得分:0)
要检查用户系统上是否安装了软件包,请浏览Base方法Pkg.Installed
(在此处了解更多信息):
"moduleB" ∈ keys(Pkg.installed())
如果已安装请求的“ moduleB”,则返回True。
如果您需要确定已加载软件包,请使用isdefined()
(Main, :moduleB)
希望有帮助!