这是让我有些惊讶的行为:
1.9.3-p392 :001 > n = 1
=> 1
1.9.3-p392 :002 > n.frozen?
=> false
1.9.3-p392 :003 > 1.freeze
=> 1
1.9.3-p392 :004 > n.frozen?
=> true
我尝试浏览RubySpec源代码frozen
,但我根本没有看到任何关于 Fixnums 的信息。
这种行为与非 MRI Ruby 实现的预期行为相同吗?如果我运行n = 1; 1.freeze; n.frozen?
,最终结果是否总是true
在任何 Ruby 实现上?为什么或者为什么不?