Function 从Julia中的包复制函数

Function 从Julia中的包复制函数,function,copy,julia,Function,Copy,Julia,免责声明:我知道以下是非常糟糕的做法。我只是需要一个快速修复调试的目的 我正在尝试使用JuMP.jl和LightXML.jl运行一个Julia包,该包是 我得到以下错误: 警告:跳转和LightXML都导出“名称”;在模块JEMS中使用it必须是合格的 首先添加LightXML,所以我想复制name,然后让跳转覆盖 这样做的语法是什么 name功能包括: name(::LightXML.XMLElement) name(::LightXML.XMLNode) name(::LightXML.XM

免责声明:我知道以下是非常糟糕的做法。我只是需要一个快速修复调试的目的

我正在尝试使用JuMP.jl和LightXML.jl运行一个Julia包,该包是

我得到以下错误:

警告:跳转和LightXML都导出“名称”;在模块JEMS中使用it必须是合格的

首先添加LightXML,所以我想复制
name
,然后让跳转覆盖

这样做的语法是什么

name
功能包括:

name(::LightXML.XMLElement)
name(::LightXML.XMLNode)
name(::LightXML.XMLAttr)

根据评论中的讨论,我应该指出警告告诉您,如果您想在代码中使用
名称
,您应该指定要使用哪个模块的
名称
。您可以通过使用模块/包名称(如
LightXML.name
JuMP.name
)对其进行限定来实现此目的

如果要为(例如,
LightXML.name
)创建别名,也可以这样做

using LightXML

# make `name2` be an alias for `LightXML.name`
const name2 = LightXML.name # `name2` refers to `LightXML.name` but `LightXML.name` still exists

using JuMP
using JuMP: name # tell the compiler `name` without qualifiers refer to `JuMP.name` so you do not have to qualify it
这实际上并没有改变
LightXML.name
的名称,而是为
LightXML.name
创建了一个别名。在此之后,您可以编写
name2
而不是
LightXML.name
,或者仍然按原样使用
LightXML.name

请注意,
const
是此处的一个重要细节,否则无论何时使用
name2
Julia都必须查找
name2
引用的内容是否已更改,这将降低性能

另一件需要注意的事情是,如果您想使用
name
而不使用限定符来引用
JuMP.name
,您可以使用JuMP:name
编写
,以指示编译器应该使用哪个
name
(因为还有两个
name
s)。但是,在使用
name
之前,您应该在代码中不使用任何限定符

因此,以下方法将不起作用


您是否知道此警告仅与您将要编写的代码有关?这不会影响包本身,因为它们的名称空间是独占的。除了要在代码中使用
name
时要在
JuMP
中使用
name
LightXML.name
中要在
LightXML
中使用
name时要在代码中使用
。我只是想指出这些,虽然你问的是很可能的。啊,这很有效。非常感谢你!不过,出于兴趣,您实际上如何复制这样一个函数呢?这取决于您所说的复制是什么意思。你只是想让
LightXML
中的
name
有一个不同于
name
的名称,这样你就可以引用它而不需要任何共谋吗?是的,这正是我的意思,例如
name2=…
,其中
name2
可以像
LightXML.name
一样用于所有方法。
julia> using LightXML
julia> name             # we used `name` here to refer to `LightXML.name `
julia> using JuMP       # this will give you the same warning in your question
julia> using JuMP: name # this will give you a warning and be **ignored**

# `name` continues to refer to `LightXML.name` rather than `JuMP.name`