Julia 为什么Juila模块必须以点作为前缀?

Julia 为什么Juila模块必须以点作为前缀?,julia,Julia,为什么模块使用.A必须以点作为前缀?如果你漏掉这个点,它就不起作用了 文件。/A.jl 文件./Main.jl 第二部分 如果将文件A.jl移动到不同的位置,例如../some dir/A.jl,则必须使用..A将其前缀添加到两个点。为什么?因为您在当前模块中定义了模块A。圆点表示在当前模块内查看此信息 因为您在当前模块中定义了模块A。圆点表示在当前模块内查看此信息 在深入挖掘之后——答案似乎是——不要使用模块 它说,文件是错误的 实际上,模块的使用与文件的位置紧密相关,可以使用Foo、使用.F

为什么模块使用.A必须以点作为前缀?如果你漏掉这个点,它就不起作用了

文件。/A.jl

文件./Main.jl

第二部分


如果将文件A.jl移动到不同的位置,例如../some dir/A.jl,则必须使用..A将其前缀添加到两个点。为什么?

因为您在当前模块中定义了模块A。圆点表示在当前模块内查看此信息

因为您在当前模块中定义了模块A。圆点表示在当前模块内查看此信息

在深入挖掘之后——答案似乎是——不要使用模块

它说,文件是错误的 实际上,模块的使用与文件的位置紧密相关,可以使用Foo、使用.Foo、使用..Foo或使用Main.Foo-这取决于Foo模块相对于导入它的文件的位置。在我个人看来,这种设计有很大的问题

VSCode编辑器中不支持,无法理解如何使用..Foo。还有其他使用模块的方法,包括更改startup.jl或JULIA_LOAD_路径——这些方法都不起作用。我假设没有人注意到这些问题,因为没有人实际使用模块

YCombinator上的首要答案-给出了相同的答案-在Julia中使用模块的最佳方式-是根本不使用它


在深入挖掘之后——答案似乎是——不要使用模块

它说,文件是错误的 实际上,模块的使用与文件的位置紧密相关,可以使用Foo、使用.Foo、使用..Foo或使用Main.Foo-这取决于Foo模块相对于导入它的文件的位置。在我个人看来,这种设计有很大的问题

VSCode编辑器中不支持,无法理解如何使用..Foo。还有其他使用模块的方法,包括更改startup.jl或JULIA_LOAD_路径——这些方法都不起作用。我假设没有人注意到这些问题,因为没有人实际使用模块

YCombinator上的首要答案-给出了相同的答案-在Julia中使用模块的最佳方式-是根本不使用它


谢谢但我不想在中定义一个模块,它与我当前的模块有什么关系,我希望能够轻松地编辑它-因此它应该是我项目文件夹中的一个文件,但它应该与标准模块(如使用绘图)一样使用,我如何才能做到这一点?]dev/Path/to/MyModule或]add/Path/to/MyModule谢谢。但我不想在中定义一个与当前模块相关的模块,我希望能够轻松编辑它-因此它应该是我项目文件夹中的一个文件,但它应该与标准模块一样使用,比如使用绘图,我该怎么做?]dev/Path/to/MyModule或]add/Path/to/MyModule这绝对不是正确的结论,文档的这一部分是正确的。如果你想把一个模块当作一个包来加载,那么就把它当作一个包来构建,并确保它可以通过标准的代码加载机制来加载。这肯定不是正确的结论,文档的这部分是正确的。如果您想像加载包一样加载一个模块,那么将其构造为一个包,并确保它可以通过标准代码加载机制加载。
module A
  export sayHi
  function sayHi() 
    println("hi")
  end
end
include("./A.jl")
using .A # <= Why it has to be prefixed with dot?

sayHi()
include("./Main.jl")