From: Michal Rokos Date: 2002-02-23T07:00:33+09:00 Subject: Re: dispatching and class references Paul Brannan wrote: > It looks like you've frozen your container but not the objects inside. > > [pbrannan@zaphod src]$ irb > irb(main):001:0> a = "foo" > "foo" > irb(main):002:0> b = "bar" > "bar" > irb(main):003:0> arr = [a, b].freeze > ["foo", "bar"] > irb(main):004:0> arr[0] = 42 > TypeError: can't modify frozen array > from (irb):4:in `[]=' > from (irb):4 > irb(main):005:0> a[0] = "b" > "b" > irb(main):006:0> p arr > ["boo", "bar"] > nil But objects inside are not frozen. irb(main):012:0> c = ["A", "B"] ["A", "B"] irb(main):013:0> c.freeze ["A", "B"] irb(main):014:0> c.frozen? true irb(main):015:0> a = c[0] "A" irb(main):016:0> a << "XXXXXXXXXXXXXXXXXX" "AXXXXXXXXXXXXXXXXXX" irb(main):017:0> c ["AXXXXXXXXXXXXXXXXXX", "B"] irb(main):018:0> c.frozen? true Do we need deep_freeze? Michal -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Michal Rokos Czech Technical University, Prague E-mail: m.rokos@sh.cvut.cz Jabber: majkl@jabber.cz, ICQ: 36118339 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-