如何删除 Julia REPL 中的函数?

How to remove a function in Julia REPL?

如何删除在 Julia REPL 中创建的函数?这可以在不重新启动会话的情况下完成吗?这是我想到的,因为我创建了一个输入错误类型的函数,然后正确输入,但无法摆脱旧的输入。

http://docs.julialang.org/en/release-0.4/manual/faq/ 上的常见问题解答 状态:

Julia does not have an analog of MATLAB’s clear function; once a name is
defined in a Julia session (technically, in module Main), it is always present.

您不能在不重新启动 REPL (Julia v0.4) 的情况下删除函数。数据类型也是如此。

这与 Julia 的 type mechanism 工作方式有关,但不幸的是我对它知之甚少,无法进行更详细的解释。

这是 Julia 文档所指的参考资料。

没有删除功能的方法,因此最好的选择是重新启动终端。

https://docs.julialang.org/en/latest/manual/faq/#how-do-i-delete-an-object-in-memory

希望尽快改变

假设你已经定义了一个函数

xx(x) = 42

你可以找到

的方法
m = @which xx(1)

并用

删除它
Base.delete_method(m)

注意 Base.delete_method(xx) 将不起作用,即您不会像这样删除新函数(名称为 xx):

julia> xx
xx (generic function with 0 methods)

=> 函数名xx 还知道,但是你定义的方法已经没有了。但是对于按照您的要求删除“输入错误类型的函数”,这可能是您想要的解决方案。

(基于 this thread。)