当我覆盖朱莉娅的一个函数时收到警告?

时间:2016-04-04 12:43:16

标签: julia

Julia默认情况下会将许多名称导入范围。当我无意中覆盖其中一个时,有没有办法得到警告?

1 个答案:

答案 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

对于导入的名称,您是否有不同的上下文?