include
的推荐方式是什么?您项目的所有文件?
我见过很多使用类似结构的例子: include
的有序列表单个顶级文件(定义 Module
的文件,或应用程序中的“主”文件)中的语句。
这似乎也是以下线程中的结论:
https://discourse.julialang.org/t/best-practices-for-structuring-larger-projects/2652?u=nhdaly
然而,Lint.jl
似乎对这种项目结构很不满意,提示执着use of undeclared symbol
s。
考虑以下示例:
# --- 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
之前可用被编译。但是Lint.jl
不能知道。即使使用 Atom 集成 linter
,它显示相同的错误。所以最好有 lib2.jl
include("lib1.jl")
而不是顶级文件中的所有包含?或者最好把它们放在两个地方,就像你对 C++
所做的那样。标题?我还没有在任何地方看到明确的建议,如果有人可以提供,我很乐意! :)编辑:更改文件名以反射(reflect)更典型的 julia 目录结构。
最佳答案
我通常做一个:
PkgDev.generate("MyPackage", "MIT")
这将生成整个文件夹结构。我将我的 Julia(.jl) 文件放在 src 文件夹中,并使用“using”在同一文件夹中的其他 Julia 文件中导入函数。
关于include - julia: `include` 文件的推荐方法:顶级文件中的包含列表或嵌套包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50083783/