【发布时间】:2013-10-04 02:00:17
【问题描述】:
Ruby 2.1 将有一个冻结字符串,因此每次解释器运行时都不会重新创建对象,即
my_hash["abcd"f] = 123
为什么解释器不能自动检测到这个字符串不会改变而只是自动冻结它?
或者,pre-ruby 2.1 一旦解释器开始运行,任何代码如何更改这样的字符串?如果我们说“abcd”需要被冻结,那么一定有一些方法可以改变它。
-- 更新:上面的问题已经更新,所以下面的 cmets 有点尴尬,但解决了之前的代码示例,它不是那么好。
-- 更新:http://globaldev.co.uk/2014/05/ruby-2-1-in-detail/ Ruby 密钥会自动冻结。
【问题讨论】:
-
考虑
mydef.downcase!,它将修改返回的字符串。现在,如果你想在 pre-2.1 中冻结/保留字符串,你只需要使用符号。