问题:当我构建自己的模块时,Julia using与importJulia有什么区别?
我基于阅读文档的猜测: using用于将另一个模块带入当前模块的名称空间.import用于将特定类型/函数/变量从其他模块引入当前模块的名称空间.
那么,我有多难?
use*_*730 32
Julia Modules文档说明:
该
import关键字[...] 只能对在一个时间一个名字.它不会添加要搜索的模块using.import也不同之处在于using必须使用import新方法扩展函数.[...] 名称仅可通过其显示的功能using无法扩展.
(强调我的.)
例如,您可以使用import添加方法Base.show来漂亮打印您自己的类型,但不是using.
还importall可以导入模块的所有导出名称.
Nat*_*han 28
关于此的文档(Julia 1.4 的更新链接)非常好。以下是我认为最简洁的摘要:
(一个演示模块,使下面的例子具体)
module MyModule
export x, y
x() = "x"
y() = "y"
p() = "p"
end
Run Code Online (Sandbox Code Playgroud)
(这是文档中的一个表,但 StackOverflow 仍然不会添加对表的支持,所以......重新格式化)
命令
using MyModule
x和y), ,MyModule.x,MyModule.y和MyModule.pMyModule.x, MyModule.y, 和MyModule.pusing MyModule: x, p
x和pimport MyModule
MyModule.x, MyModule.y, 和MyModule.pMyModule.x, MyModule.y, 和MyModule.pimport MyModule.x, MyModule.p
x和px和pimport MyModule: x, p
x和px和p以我觉得容易记住的方式总结主要区别:
using NiceStuff允许在没有模块限定符的情况下访问导出的名称,但事实并非import NiceStuff如此;和import NiceStuff: nice允许在没有模块限定符的情况下对指定函数进行扩展using NiceStuff: nice访问(添加方法),但事实并非如此。还有一个细微的区别:
X as Y对于带有using和import( using Random: randstring as rstr, import Random: randstring as rstr) 的单个标识符,语法是允许的,但对于模块名称本身来说,import Random as Rnd是允许的,而using Random as Rnd是一个错误。
我发现模块文档页面中的其他一些有用的点
using ModuleName是出口清单唯一重要的形式。
import NiceStuff相当于using NiceStuff: NiceStuff.