模块使用

Julia 中的模块(module)是一些互相隔离的可变工作空间,也就是说它们会引入新的全局作用域。它们在语法上以 module Name ... end 界定。模块允许你创建顶层定义(也称为全局变量),而无需担心命名冲突。在模块中,利用导入(importing),你可以控制其它模块中的哪些名称是可见的;利用导出(exporting),你可以控制你自己的模块中的哪些名称是公开的。

下面的示例演示了模块的主要功能:

  1. module MyModule
  2. using UUIDs:uuid1,uuid2
  3. import Base.show
  4. export MyType,foo
  5. struct MyType
  6. x
  7. end
  8. bar(x)=2x
  9. foo(a::MyType) = bar(a.x) + 1
  10. end
  • module ... end声明一个模块,用export 名1,名2 ...导出函数/变量/类型,但不能带有参数,一般不缩进
  • baremodule ... end声明的模块不会导入Baseeval
  • import 模块名[.元素名]导入模块中的元素名,如果不指定,导入整个模块
  • using也是导入模块,方便调用,但是重载函数时必须写上模块名

标准模块

有三个重要的标准模块:

  • Core包含了语言“内置”的所有功能。
  • Base包含了绝大多数情况下都会用到的基本功能。
  • Main是顶层模块,当 julia 启动时,也是当前模块。