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
包获得。