如何向 Julia 中的现有函数添加方法?

How can I add a method to an existing function in 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!(base.children, child)
end

这就是我想做的;扩展现有功能以适当地处理新类型。但这会引发错误。这可能吗?

我刚刚解决了,所以我想还是post这个问题,以防以后有人遇到麻烦。

您必须显式导入函数才能扩展它。

所以这行得通:

import Base.push!

function push!(base :: Node, child :: Node)
   push!(base.children, child)
end