在构建模块时,Julia中的“using”和“import”有什么区别?
问题:当我构建自己的模块时,在Julia中使用在构建模块时,Julia中的“using”和“import”有什么区别?,julia,Julia,问题:当我构建自己的模块时,在Julia中使用和导入有什么区别 我根据阅读文档猜测:使用将另一个模块带入当前模块的名称空间导入用于将来自其他模块的特定类型/函数/变量带入当前模块的名称空间 那么,我错了多少?朱莉娅说: 仅导入关键字[…] 一次操作一个名称。它不添加要添加的模块 使用搜索的方式导入与使用的不同之处在于 必须使用import导入函数才能使用新的 方法。[…]无法扩展其名称仅通过使用可见的函数 (我的重点。) 例如,您可以使用import将方法添加到Base。show可以漂亮地打印您
和导入有什么区别
我根据阅读文档猜测:使用
将另一个模块带入当前模块的名称空间<代码>导入
用于将来自其他模块的特定类型/函数/变量带入当前模块的名称空间
那么,我错了多少?朱莉娅说:
仅导入关键字[…]
一次操作一个名称。它不添加要添加的模块
使用
搜索的方式<代码>导入
与使用
的不同之处在于
必须使用import
导入函数才能使用新的
方法。[…]无法扩展其名称仅通过使用
可见的函数
(我的重点。)
例如,您可以使用import
将方法添加到Base。show
可以漂亮地打印您自己的类型,但不能使用使用
还有导入模块的所有导出名称的importall
(这个答案是指Julia 0.6;文档被改写为1.0。)关于这一点的(Julia 1.4的更新链接)非常好。以下是我认为最简洁的摘要:
(一个演示模块,使下面的示例具体化)
(这是文档中的一个表,但StackOverflow仍然不会添加对表的支持,因此…重新格式化)
命令
使用MyModule
- 范围内:所有导出名称(
和x
)、y
、MyModule.x
和MyModule.y
MyModule.p
- 可扩展:
、MyModule.x
和MyModule.y
MyModule.p
- 范围内:所有导出名称(
使用MyModule:x,p
- 范围:
和x
p
- 可扩展:(无)
- 范围:
导入MyModule
- 在范围中:
、MyModule.x
和MyModule.y
MyModule.p
- 可扩展:
、MyModule.x
和MyModule.y
MyModule.p
- 在范围中:
导入MyModule.x、MyModule.p
- 范围:
和x
p
- 可扩展:
和x
p
- 范围:
导入MyModule:x,p
- 范围:
和x
p
- 可扩展:
和x
p
- 范围:
使用
比导入
更具限制性,因为它禁止扩展名称吗?或者可能是使用
可以做些什么,但导入
却做不到。当文档中说“名称只能通过使用
才能看到的函数不能扩展”时,这是什么意思?具体地说,“可见”在函数名的上下文中是什么意思?我的头脑被炸开了。。。我以前没有意识到,现在,使用
允许导入扩展。
module MyModule
export x, y
x() = "x"
y() = "y"
p() = "p"
end