gpt4 book ai didi

Julia 循环包含

转载 作者:行者123 更新时间:2023-12-02 02:39:02 25 4
gpt4 key购买 nike

我的目标:对于一个项目,能够简单地(可能是循环地)包含本地文件(同一项目的一部分,同一目录)。

在 Julia 中,假设我有这些文件:

FILE1.jl

module A

include("FILE2.jl")
using B

# Type annotations that need types from B

end

FILE2.jl

module B

include("FILE1.jl")
using A

# Type annotations that need types from A

end

在 Julia (>v1) 中,这会导致无限循环。我尝试将文件添加到我的加载路径中,以便我可以直接使用 using 或 import,但仍然找不到它们。

假设循环依赖关系并将文件包含在同一目录中并且属于同一项目的一部分,“朱利安”方式是什么?我看到很多帖子都说“如果是这样的话,你的代码可能是错误的”,我认为这只是一个愚蠢的说法。

最佳答案

一种常见的结构是将所有include放在一个位置,即项目的根目录。 Flux.jl就是一个很好的例子。

如果项目非常大,人们会使用模块来分割他们的项目,但你不需要这样做!大型项目可以由单个模块组成。我建议仅将一段代码拆分为自己的模块(如果它作为一个独立整体有意义)。 (其他人可能对此有不同的看法!)但是既然您询问了循环引用,听起来单个模块更适合您的情况。

模块不能包含循环引用:

# will not work
module A
import ..B: y
x = 1
end
module B
import ..A: x
y = 1
end

这不是函数的问题:

function a(x)
if x < 1
1
else
b(x-1) * 2
end
end

function b(x)
a(x)
end

b(10)

函数可以使用在其自身定义之后定义的类型、函数、常量、模块。

关于 Julia 循环包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63909837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com