julia:推荐的`include`文件方式:顶级文件或嵌套包含的列表?

NHD*_*aly 6 project-structure include julia

include您项目的所有文件的推荐方法是什么?

我已经看到许多使用类似结构的示例:include单个顶级文件中的有序语句列表(定义Module应用程序中的"主"文件的文件).

这也似乎是在以下螺纹的结论: https://discourse.julialang.org/t/best-practices-for-structuring-larger-projects/2652?u=nhdaly


然而,Lint.jl似乎对这种项目结构非常不满,抱怨持久性的use of undeclared symbols.

请考虑以下示例:

# --- src/lib1.jl ---
struct MyStruct
    x::Int32
end

# --- src/lib2.jl ---
foo() = MyStruct(3)    # Lint.jl says: E321 MyStruct: use of undeclared symbol

# --- src/MyPackage.jl ---
module MyPackage

include("lib1.jl")
include("lib2.jl")

foo()

end
Run Code Online (Sandbox Code Playgroud)

当然,这段代码可以正常工作,因为MyStructlib2.jl编译之前可以使用.但Lint.jl无法知道.即使使用Atom集成linter,它也会显示相同的错误.

那么最好是lib2.jl include("lib1.jl")而不是top文件中的所有包含吗?或者最好将它们放在两个地方,就像C++标题一样?我没有在任何地方看到这方面的明确建议,如果有人可以提供,我会很高兴!:)


编辑:更改文件名以反映更典型的julia目录结构.

Sub*_*osh 3

我通常会做一个:

PkgDev.generate("MyPackage", "MIT")
Run Code Online (Sandbox Code Playgroud)

这会生成整个文件夹结构。我将 Julia(.jl) 文件放在 src 文件夹中,并使用“using”导入同一文件夹中其他 Julia 文件中的函数。