Julia 文件结构
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
, import
和 include
之间的区别
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
来进行强制调用,但不推荐。