对应于Ruby中python del语句的语言结构[重复]

Posted

技术标签:

【中文标题】对应于Ruby中python del语句的语言结构[重复]【英文标题】:Language construct that corresponds to python del statement in Ruby [duplicate] 【发布时间】:2014-09-05 05:09:18 【问题描述】:

Ruby 中对应于 python del 语句的语言结构是什么。通过其他方式,我可以在 Ruby 中显式释放内存。

【问题讨论】:

@delnan 感谢您告诉这些。我不知道del 可以做这么多事情。 另外,请不要将 Ruby 与 Python 进行比较,反之亦然。它们甚至不一样。 @JamesMills 即使它们完全不同(在许多领域,至少对我而言,它们似乎并不相同)在语言 Y 中要求语言特征 X 的道德等价物有什么问题?这不像打开的问题“所以我们知道 Ruby 只是 Python,但更糟糕的是。没有办法......” @delnan 因为你用 Ruby 和 Python 标记了它。一些 Pythonista 不一定知道或熟悉 Ruby 的语义,反之亦然。 【参考方案1】:

在 Python 的语言参考中,del 的作用如下:

删除名称会从本地或本地删除该名称的绑定 全局命名空间。

在 Ruby 中,一旦设置了变量,就无法取消设置。可以将变量设置为 nil,这样就可以进行 GC,但是只要在作用域内,变量就会一直保留在符号表中。

【讨论】:

您可以删除constant variables、instance variables和class variables,但不能删除局部变量或全局变量。【参考方案2】:

在Python中对于Ruby有没有对应的del方法?

del 在python 中做了很多不同的事情。在ruby 中,通常首选方法只做一件事,因此有许多方法提供del 在Python 中所做的不同方面。

不幸的是,很难说 究竟 del 在 Python 中做了什么。这是一个很有说服力的quote from the Language Reference:

这里没有详细说明,而是一些提示。

要从Array 中删除条目,请使用Array#delete_at 要从Array 中删除切片,请使用Array#slice! 要从Hash 中删除条目,请使用Hash#delete 要删除实例变量,请使用Object#remove_instance_variable 要删除类变量,请使用Module#remove_class_variable 要删除常量,请使用Module#remove_const

对于删除局部变量,Ruby 中没有方法。局部变量在块、方法、类、模块或脚本主体的末尾超出范围,无论如何这些都应该很小,因此通常不需要显式删除局部变量。如果你需要限制一个局部变量的范围,你总是可以将它包装在一个块中:

# some code here
-> 
  some_local_var = 'blah'
  # code using some_local_var
.()
# more code here, some_local_var is no longer in scope

也没有删除全局变量的方法。全局变量应该只用在快速、简短、一次性的脚本中,这并不重要。

或者,我应该如何释放 Ruby 中的内存空间?

Ruby 具有自动内存管理功能(就像 Python,顺便说一句)。它会为你释放内存。

【讨论】:

以上是关于对应于Ruby中python del语句的语言结构[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python中del 语句的用法?

命名这个 python/ruby 语言结构(使用数组值来满足函数参数)

命名这个 python/ruby 语言结构(使用数组值来满足函数参数)

Oracle-05-SQL语句概述分类&SQL*PLUS概述(初识insert,desc,list,r,del,a,c,n等命令)

python之流程控制

python流程控制