在Ruby 1.9中你可以拥有 Fixnum
, Float
,和 Symbol
解冻或冻结的值:
irb(main):001:0> a = [ 17, 42.0, :foo ]; a.map(&:frozen?)
=> [false, false, false]
irb(main):002:0> a.each(&:freeze); a.map(&:frozen?)
=> [true, true, true]
我理解冻结字符串,数组或其他可变数据类型的实用程序。据我所知, Fixnum
, Symbol
,和 Float
实例从一开始就是不可变的。有没有理由冻结它们(或者任何Ruby不会报告它们的原因 frozen?
请注意,在Ruby 2.0中 Fixnum
s和 Float
两者都是冷冻开始的 Symbol
保留上述行为。所以,它慢慢变得'更好':)