对应于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/ruby 语言结构(使用数组值来满足函数参数)
命名这个 python/ruby 语言结构(使用数组值来满足函数参数)
Oracle-05-SQL语句概述分类&SQL*PLUS概述(初识insert,desc,list,r,del,a,c,n等命令)