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

bec*_*cko 7 julia

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

Rem*_*elt 2

在模块和基本函数的上下文中,如果您覆盖名称,Julia 已经警告您。请参阅以下适用于 v 的示例0.4.5:

模块:

在 modA.jl 中:

module modA

export test

function test()
    println("modA")
end
end
Run Code Online (Sandbox Code Playgroud)

在 modB.jl 中:

module modB

export test

function test()
    println("modB")
end
end
Run Code Online (Sandbox Code Playgroud)

在 REPL 中:

julia> using modA
julia> using modB
WARNING: Using modB.test in module Main conflicts with an existing identifier
julia> test()
"modA"
Run Code Online (Sandbox Code Playgroud)

基本功能:

在 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.
Run Code Online (Sandbox Code Playgroud)

据我所知,这不适用于用户定义的函数;见下文:

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
Run Code Online (Sandbox Code Playgroud)

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