问题: 在构建自己的模块时,Julia 中的 using
和 import
有什么区别?
我通过阅读文档的猜测: using
用于将另一个模块引入当前模块的名称空间中。import
用于将其他模块的特定类型/函数/变量引入当前模块的名称空间中。
那么,我的理解有多少错误呢?
问题: 在构建自己的模块时,Julia 中的 using
和 import
有什么区别?
我通过阅读文档的猜测: using
用于将另一个模块引入当前模块的名称空间中。import
用于将其他模块的特定类型/函数/变量引入当前模块的名称空间中。
那么,我的理解有多少错误呢?
import
关键字[...] 一次只操作一个名称,不像using
那样增加要搜索的模块。import
还与using
不同,因为必须使用import
导入函数才能用新方法扩展。[...] 只能通过using
看到名称的函数无法进行扩展。
(强调是我的.)
例如,您可以使用import
将方法添加到Base.show
中以漂亮地打印自己的类型,但不能使用using
。importall
,它可以导入模块的所有导出名称。
(本答案适用于Julia 0.6;文档在1.0中重新措辞。)
关于这个的文档(适用于Julia 1.4的更新链接)非常出色。以下是我认为最简洁的摘要:
(一个演示模块,以使下面的示例具体化)
module MyModule
export x, y
x() = "x"
y() = "y"
p() = "p"
end
(这是文档中的表格,但StackOverflow仍然不支持表格,因此进行了重新格式化)
命令
using MyModule
x
和y
),MyModule.x
,MyModule.y
和MyModule.p
MyModule.x
,MyModule.y
和MyModule.p
using MyModule: x, p
x
和p
import MyModule
MyModule.x
,MyModule.y
和MyModule.p
MyModule.x
,MyModule.y
和MyModule.p
import MyModule.x, MyModule.p
x
和p
x
和p
import MyModule: x, p
x
和p
x
和p
using
可以允许导入扩展。 - phipsgabler
using
看到名称的函数无法扩展”时,这是什么意思?具体而言,在函数名称的上下文中,“可见”是什么意思? - Leonidas