ult*_*ian 6 read-eval-print-loop julia
如何删除在 Julia REPL 中工作时创建的函数?可以在不重新启动会话的情况下完成此操作吗?这对我来说是因为我创建了一个具有错误类型输入的函数,然后使其正确,但无法摆脱旧的。
\n\nhttp://docs.julialang.org/en/release-0.4/manual/faq/上的常见问题解答\n指出:
\n\nJulia does not have an analog of MATLAB\xe2\x80\x99s clear function; once a name is\ndefined in a Julia session (technically, in module Main), it is always present.\nRun Code Online (Sandbox Code Playgroud)\n
假设你已经定义了一个函数
xx(x) = 42
Run Code Online (Sandbox Code Playgroud)
你可以找到该方法
m = @which xx(1)
Run Code Online (Sandbox Code Playgroud)
并将其删除
Base.delete_method(m)
Run Code Online (Sandbox Code Playgroud)
NoteBase.delete_method(xx)不起作用,即您不会xx像这样删除新函数(带有 name )。如果你尝试,你仍然会得到:
julia> xx
xx (generic function with 0 methods)
Run Code Online (Sandbox Code Playgroud)
=> 函数名xx仍然已知,但是你定义的方法已经消失了。但是,要按照您的要求删除“输入类型错误的函数”,这可能是您想要的解决方案。
(基于此线程。)
如果不重新启动 REPL (Julia v0.4),则无法删除函数。数据类型也是如此。
这与 Julia 的类型机制的工作方式有关,但不幸的是我对它知之甚少,无法进行更详细的解释。