Julia 文件结构

认识Julia的文件结构是组织Julia工作流的基础。本文讲述了如何在Julia项目的文件结构是怎样的。

怎样定义文件结构?

Julia 的文件抽象相对低级,并且没有类结构。

例:

├─MatrixProductStates.jl
│  │  LICENSE
│  │  Manifest.toml
│  │  Project.toml
│  │  README.org
│  │
│  ├─src
│  │      compression.jl
│  │      contraction.jl
│  │      correlation.jl
│  │      groundstate.jl
│  │      MatrixProductStates.jl
│  │      MPO.jl
│  │      MPS.jl
│  │      timeevolution.jl
│  │      utils.jl
│  │
│  └─test
│          runtests.jl

将其特点总结如下:

对于一个 project 可以有多个 module 这个概念比类大,可以理解为包。

Module 以 Upper Camel style 命名。

在 Module 文件夹下,主要有 /src /test 两个文件夹。

/src 文件夹下是包主要的内容,其中包含一个以 module 名为文件,这个文件 include 所有 /src 下的文件,并且通过 export 选择暴露在外部的的 struct 和 function。其余一个每个文件包含一个类的概念。

/test 是测试文件夹。

一个project 下可以有多个 module, 这些 module 之间也可以用 using 进行引用。

当整个 project 中有多个 module 时,再最外层也可以通过/src 和 /test 对整个 project 的文件进行管理。

Q: using, importinclude 之间的区别

include 可以直接理解为 复制粘贴 其主要用在一个 module /src 的文件夹下,

using 和 import 作用的对象都是 module,若使用 using 则不用在使用 module 中 function 或 struct 时使用 module.function_name 的形式,可以直接用 function_name 调用。import 则必须要用module.function_name 的形式进行调用,这可以得到较为干净的命名空间。

推荐使用 using

Q: Module not found 的解决方法

Julia 的 using 不支持使用相对路径的方式来引用包,故需要将文件的目录加入 julia 的系统路径。

push!(LOAD_PATH,pwd())

只需要在 /project 下执行命令,就可以 using ModuleName 了

其他需要知道的事情

根据 blue style 内部使用的 function 需要通过 _function_name 进行标记。

使用了 using Module 后,可以通过 Module._function 来进行强制调用,但不推荐。

推荐阅读:

标签: Julia

添加新评论