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

标签 include julia project-structure

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/

相关文章:

arrays - Julia 中的数组/张量计算效率

Dart:web 与 web/src

ggplot2 - 牛虻地 block 目前是可组合的吗?

c - 在另一个程序中加载一个 c 程序

php默默地忽略本地主机上的包含,但不在外部服务器上

javascript - 如何在单个 js 文件中包含 jQuery 库而不干扰现有库

python - 在线程上从 Python 调用 Julia

java - 如何将测试包添加到现有的 ejb 项目中?

PyCharm - 项目结构 - 来源与资源

java - 在我的 jsp 页面上包含 jsp 文件时出错