include
项目所有文件的推荐方式是什么?
我见过许多使用类似结构的示例:单个顶级文件中的include
语句的有序列表(定义{{1}}的文件或“主”文件)申请)。
这似乎也是以下主题中的结论: https://discourse.julialang.org/t/best-practices-for-structuring-larger-projects/2652?u=nhdaly
然而,Module
似乎对这种项目结构非常不满,抱怨持久Lint.jl
。
考虑以下示例:
use of undeclared symbol
当然,此代码可以正常运行,因为# --- 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
在编译MyStruct
之前可用。但是lib2.jl
无法知道。即使使用Atom集成的Lint.jl
,它也会显示相同的错误。
那么最好是 lib2.jl linter
而不是顶层文件中的所有包含?或者最好将它们放在两个位置,就像include("lib1.jl")
标题一样?我没有在任何地方看到这方面的明确建议,如果有人可以提供,我会很高兴! :)
编辑:更改了文件名以反映更典型的julia目录结构。
答案 0 :(得分:2)
我通常会这样做:
PkgDev.generate("MyPackage", "MIT")
这将生成整个文件夹结构。我将Julia(.jl)文件放在src文件夹中,并使用“ using”将函数导入同一文件夹中其他Julia文件中。