在构建模块时,Julia中的“using”和“import”有什么区别?

时间:2014-11-23 06:10:44

标签: julia

问题:当我构建自己的模块时,Julia中usingimport之间的区别是什么?

我的猜测基于阅读文档: using用于将另一个模块带入当前模块的名称空间。 import用于将其他模块中的特定类型/函数/变量引入当前模块的名称空间。

那么,我有多难?

2 个答案:

答案 0 :(得分:22)

朱莉娅Modules documentation陈述:

  

import关键字[...]   一次只能使用一个名称。它不会添加模块   搜索using的方式。 import也与using不同   必须使用import 导入函数以使用new进行扩展   方法。 [...] 其名称仅通过using可见的功能无法扩展

(强调我的。)

例如,您可以使用importBase.show添加方法来漂亮打印自己的类型,但不能using

还有importall导入模块的所有导出名称。

答案 1 :(得分:14)

与此相关的documentation(Julia 1.4的更新链接)非常好。这是我发现的最简洁的摘要:

(一个用于演示以下示例的演示模块)

module MyModule

export x, y

x() = "x"
y() = "y"
p() = "p"

end

(这是文档中的表,但是StackOverflow仍然不会添加对表的支持,因此...重新格式化)

命令

  • using MyModule
    • 范围内:所有导出的名称(xy),MyModule.xMyModule.yMyModule.p
    • 可扩展:MyModule.xMyModule.yMyModule.p
  • using MyModule: x, p
    • 范围内:xp
    • 可扩展:(无)
  • import MyModule
    • 范围内:MyModule.xMyModule.yMyModule.p
    • 可扩展:MyModule.xMyModule.yMyModule.p
  • import MyModule.x, MyModule.p
    • 范围内:xp
    • 可扩展:xp
  • import MyModule: x, p
    • 范围内:xp
    • 可扩展:xp