Function 从Julia中的包复制函数
免责声明:我知道以下是非常糟糕的做法。我只是需要一个快速修复调试的目的 我正在尝试使用JuMP.jl和LightXML.jl运行一个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
我得到以下错误:
警告:跳转和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`