如何清除或删除julia中的全局?

Mat*_*teo 21 global global-variables julia

是否有任何语法与MATLAB的"清除"类似,即如果我有一个全局变量"a".我怎么摆脱它?我怎么做模拟

clear a
Run Code Online (Sandbox Code Playgroud)

小智 11

从0.3.9开始,可以通过workspace()函数清除所有全局变量(获取新工作空间).

也可以使用LastMain(例如LastMain.foobar)从最后一个工作区获取变量.

所以目前唯一能做到你想做的事情的方法就是清除所有东西,然后将你想要的变量转移到你的新工作区.


tho*_*oly 10

请在此处查看此问题的最新答案:http://docs.julialang.org/en/latest/manual/faq/#how-do-i-delete-an-object-in-memory

取自文档:

Julia没有模拟MATLAB的清晰功能; 一旦在Julia会话中定义了名称(技术上,在模块Main中),它始终存在.

如果您关注内存使用情况,则始终可以使用内存较少的对象替换对象.例如,如果A是您不再需要的千兆字节大小的数组,则可以释放A = 0的内存.内存将在下次运行垃圾收集器时释放; 你可以用gc()来强制这种情况发生.


nic*_*y12 7

在Julia 0.6(不确定旧版本是否支持此版本).你可以通过调用删除变量并释放它的内存clear!().

你得打电话清楚!在变量的符号名称上:

julia> x = 5
5

julia> sizeof(x)
8

julia> clear!(:x)

julia> sizeof(x)
0
Run Code Online (Sandbox Code Playgroud)

正如DFN指出的那样,这实际上不会删除对象,而是将它们设置为nothing.这对于释放工作空间中的内存非常有用,因为您可以"删除"非常量对象的内存占用.

  • 这很有趣,但不幸的是它还没有完全清除.该值只是设置为"nothing".例如,你不能做`julia> const x = 3`,因为那时你得到'错误:不能声明x常数; 它已经有了价值. (4认同)

小智 7

对于Julia-0.6.4

clear!(:x)
Run Code Online (Sandbox Code Playgroud)

正如@niczky 所提到的那样工作,并且它正在 iJulia 中工作。

但是,对于Julia-1.0.0

clear!(:x)
Run Code Online (Sandbox Code Playgroud)

...抛出以下内容:

ERROR: UndefVarError: clear! not defined
Stacktrace:
 [1] top-level scope at none:0
Run Code Online (Sandbox Code Playgroud)

所以,它在 Julia-1.0.0 上被破坏了。


Ste*_*ski 6

目前,一个没有.但是,跟踪该功能存在一个问题:

https://github.com/JuliaLang/julia/issues/2385