Isn't technically all Fixnums "frozen" (because you can't modify the state)? // Magnus Holm On Fri, Apr 15, 2011 at 02:34, <redmine / ruby-lang.org> wrote: > > Issue #4578 has been updated by Shyouhei Urabe. > > > You agree integers are immutable. Immutable objects have no states by > definition, OK? > > The frozenness is a state. You should not care about. > ---------------------------------------- > Bug #4578: Fixnum.freeze not frozen? > http://redmine.ruby-lang.org/issues/4578 > > Author: Russell Bevers > Status: Open > Priority: Normal > Assignee: > Category: > Target version: > ruby -v: ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin10.7.0] > > > Using ruby 1.8.7 p334 > > a = 5; a.freeze > > Expect: true == a.frozen? > Result: false == a.frozen? > > I realize Fixnum is already immutable, however consider the following code: > > class Demanding > attr_reader :important > > def initialize(important) > @important = important > @important.freeze > end > end > > Demanding wants to be able to rely on identifier not changing over its > lifespan. I could make it demanding with some other mechanism such as: > * Force important to be a particular type > * Force important to respond_to? particular messages during initialization > > These are all slippery and don't address the concern of mutability of > important objects. Freeze seemed like the obvious solution, but it's > probably best for me to just take a deep copy of important for Demanding's > own use. > > In the meantime, I thought I should share that freeze is not working for > all objects in Ruby 1.8.7 p334. > > > -- > http://redmine.ruby-lang.org > >