模块使用
Julia 中的模块(module)是一些互相隔离的可变工作空间,也就是说它们会引入新的全局作用域。它们在语法上以 module Name ... end
界定。模块允许你创建顶层定义(也称为全局变量),而无需担心命名冲突。在模块中,利用导入(importing),你可以控制其它模块中的哪些名称是可见的;利用导出(exporting),你可以控制你自己的模块中的哪些名称是公开的。
下面的示例演示了模块的主要功能:
module MyModule
using UUIDs:uuid1,uuid2
import Base.show
export MyType,foo
struct MyType
x
end
bar(x)=2x
foo(a::MyType) = bar(a.x) + 1
end
module ... end
声明一个模块,用export 名1,名2 ...
导出函数/变量/类型,但不能带有参数,一般不缩进baremodule ... end
声明的模块不会导入Base
和eval
import 模块名[.元素名]
导入模块中的元素名,如果不指定,导入整个模块using
也是导入模块,方便调用,但是重载函数时必须写上模块名
标准模块
有三个重要的标准模块:
Core
包含了语言“内置”的所有功能。Base
包含了绝大多数情况下都会用到的基本功能。Main
是顶层模块,当 julia 启动时,也是当前模块。