如何在Julia中恢复过度编写的内置函数

如何在Julia中恢复过度编写的内置函数,julia,Julia,这个问题可能也适用于其他语言 如果我使用内置函数名作为变量名, 我可以通过执行以下操作来恢复该功能: all = 123 all = Base.all 但如果我定义了一个自定义函数sum(),然后 sum = Base.sum 我说“常数和的重新定义无效”时出错 如果我重写了内置函数,有没有办法恢复它?或者这是设计上不可能的?如果在REPL中工作时这对您来说只是一个问题,并且您不介意丢失所有其他定义,您可以执行workspace()重置Main对于本例,您可以将sum重新定义为Base.su

这个问题可能也适用于其他语言

如果我使用内置函数名作为变量名, 我可以通过执行以下操作来恢复该功能:

all = 123
all = Base.all
但如果我定义了一个自定义函数sum(),然后

sum = Base.sum
我说“常数和的重新定义无效”时出错


如果我重写了内置函数,有没有办法恢复它?或者这是设计上不可能的?

如果在REPL中工作时这对您来说只是一个问题,并且您不介意丢失所有其他定义,您可以执行
workspace()
重置
Main
对于本例,您可以将
sum
重新定义为
Base.sum

sum(x)=Base.sum(x)

那是你想要的吗


注意。这可能不会“覆盖”您对总和的定义。如果它使用类型参数(例如,
sum(x::Vector)
它仍然可以优先于常规
sum(x)进行调度
,在这种情况下,您需要对这些特定的方法重复上述操作。

这是正确的方法,但正如您所看到的,如果变量是函数,则无法重新定义这样的变量,因此,不,我认为您不能这样做。谢谢!这不完全是我要求的,但在我学习Julia的基础知识时非常有用,只需尝试一下如果你真的需要覆盖一段代码的定义,你能把代码放到一个模块中,这样它只会影响该模块中的代码,而在该模块之外,你会看到函数的正常定义吗?如果我重新定义了pi,该怎么办?