Methods 如何向Julia中的现有函数添加方法?
所以在Julia中,每个函数都有方法 以下是有意义的:Methods 如何向Julia中的现有函数添加方法?,methods,julia,Methods,Julia,所以在Julia中,每个函数都有方法 以下是有意义的: f(x, y) = x + y f(x) = x + 2 这提供了两种附加到此函数的方法 但假设我想向现有的Julia函数添加一个方法,而不是重写它 例如: a = [2, 3] push!(a, 4) a == [2, 3, 4] # true type Node children :: Array{Node} end function push!(base :: Node, child :: Node) push!(b
f(x, y) = x + y
f(x) = x + 2
这提供了两种附加到此函数的方法
但假设我想向现有的Julia函数添加一个方法,而不是重写它
例如:
a = [2, 3]
push!(a, 4)
a == [2, 3, 4] # true
type Node
children :: Array{Node}
end
function push!(base :: Node, child :: Node)
push!(base.children, child)
end
这就是我想做的;扩展现有函数以适当地处理新类型。但这是一个错误。这可能吗?我刚刚解决了这个问题,所以我想还是把这个问题贴出来,以防人们将来遇到麻烦 为了扩展函数,必须显式导入函数 因此,这将起作用:
import Base.push!
function push!(base :: Node, child :: Node)
push!(base.children, child)
end
这几乎是一个错误。不过我不打算投票结束,因为我实际上认为你的问题比链接问题清楚得多(虽然链接问题的答案要彻底得多)。谢谢——我没有看到。或者,你可以拼写这个
function Base.push!(…
。我个人更喜欢这种风格,因为您可以在函数定义站点判断是否扩展了基本方法。否则,您需要扫描整个文件以获取导入语句。