如何删除Julia REPL中的函数?

时间:2016-03-05 05:58:08

标签: julia read-eval-print-loop

如何删除在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.

3 个答案:

答案 0 :(得分:3)

如果不重新启动REPL,则无法删除功能(Julia v0.4)。数据类型也是如此。

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

答案 1 :(得分:0)

这是Julia文档所引用的参考。

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

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

希望很快会改变

答案 2 :(得分:0)

假设您已定义函数

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。)