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)
当然,这段代码可以正常工作,因为MyStruct在lib2.jl编译之前可以使用.但Lint.jl无法知道.即使使用Atom集成linter,它也会显示相同的错误.
那么最好是lib2.jl include("lib1.jl")而不是top文件中的所有包含吗?或者最好将它们放在两个地方,就像C++标题一样?我没有在任何地方看到这方面的明确建议,如果有人可以提供,我会很高兴!:)
编辑:更改文件名以反映更典型的julia目录结构.
我通常会做一个:
PkgDev.generate("MyPackage", "MIT")
Run Code Online (Sandbox Code Playgroud)
这会生成整个文件夹结构。我将 Julia(.jl) 文件放在 src 文件夹中,并使用“using”导入同一文件夹中其他 Julia 文件中的函数。