Julia默认情况下会将许多名称导入范围。当我无意中覆盖其中一个时,有没有办法得到警告?
答案 0 :(得分:2)
在模块和基本功能的上下文中,如果您覆盖名称,Julia已经警告过您。请参阅以下适用于v 0.4.5
的示例:
模块:
在modA.jl中:
module modA
export test
function test()
println("modA")
end
end
在modB.jl中:
module modB
export test
function test()
println("modB")
end
end
在REPL中:
julia> using modA
julia> using modB
WARNING: Using modB.test in module Main conflicts with an existing identifier
julia> test()
"modA"
基本功能:
在REPL中:
julia> function +(x::Float64, y::Float64)
println("my addition")
end
julia> WARNING: module Main should explicitly import + from Base
WARNING: Method definition +(Float64, Float64) in module Base at float.jl:208
overwritten in module Main at none:2.
据我所知,这不适用于用户定义的功能;见下文:
julia> function test(x::Float64, y::Float64)
println("First Definition")
end
julia> test(1.0, 2.0)
First Definition
julia> function test(x::Float64, y::Float64)
println("Second Definition")
end
julia> test(1.0, 2.0)
Second Definition
对于导入的名称,您是否有不同的上下文?