Julia中模块和结构之间的名称冲突

Julia中模块和结构之间的名称冲突,julia,Julia,我想确认我不能在定义为Test的模块中定义名为Test的结构 文件main.jl: # MAIN PROGRAM include("test.jl") import .Test t = Test.Test(3,4) println(t) module Test struct Test a::Int b::Int end end 文件test.jl: # MAIN PROGRAM include("tes

我想确认我不能在定义为
Test
的模块中定义名为
Test
的结构

文件main.jl

# MAIN PROGRAM

include("test.jl")
import .Test

t = Test.Test(3,4)
println(t)
module Test

        struct Test
            a::Int
            b::Int
        end

end
文件test.jl

# MAIN PROGRAM

include("test.jl")
import .Test

t = Test.Test(3,4)
println(t)
module Test

        struct Test
            a::Int
            b::Int
        end

end
我得到:

$ /usr/local/julia-1.2.0/bin/julia main.jl
ERROR: LoadError: LoadError: invalid redefinition of constant Test
Stacktrace:
 [1] top-level scope at /usr/home/user/test/test.jl:3
 [2] include at ./boot.jl:328 [inlined]
 [3] include_relative(::Module, ::String) at ./loading.jl:1094
 [4] include(::Module, ::String) at ./Base.jl:31
 [5] include(::String) at ./client.jl:431
 [6] top-level scope at /usr/home/user/test/main.jl:3
 [7] include at ./boot.jl:328 [inlined]
 [8] include_relative(::Module, ::String) at ./loading.jl:1094
 [9] include(::Module, ::String) at ./Base.jl:31
 [10] exec_options(::Base.JLOptions) at ./client.jl:295
 [11] _start() at ./client.jl:464
in expression starting at /usr/home/user/test/test.jl:3
in expression starting at /usr/home/user/test/main.jl:3
我想确认我不能在定义为Test的模块中定义名为Test的结构


你不能。每个模块都有一个自绑定,因此在
Test
模块中,
Test
名称已经被(模块本身)使用。

当您想要一个带有“main”名称的结构时,有时包/模块名称是复数的。例如,
Color
类型可以通过加载
Colors
包获得。