如何在不重新启动的情况下分离包

How to detach a package without restarting

参考:docs Pkg

我想比较来自同一 session/script 中两个不同包的两个同名方法。为避免名称冲突,我想 negate using(即“撤消”/“反转”)。类似于 detachR 所做的事情。

using PackageOne
some_method()

undo using PackageOne  # <-- negate `using PackageOne` without restarting
using PackageTwo
some_method()  # name collision avoided here

您不能分离已加载到某个模块 AFAICT 中的包。您可以做的是使用这些方法将您的代码包装在一个模块中,如下所示:

module Test1
    using PackageOne
    some_method()
end

module Test2
    using PackageTwo
    some_method()
end

另一种方法是:

using PackageOne
using PackageTwo

methods = [PackageOne.some_method, PackageTwo.some_method]

function test(some_method)
    # here use some_method
end

for method in methods
    test(method)
end