>> person2 = person1 => "Wim" >> person1.freeze => "Wim" >> person2[0] = "R" TypeError: can't modify frozen string from (irb):18:in `[]=' from (irb):18
~/rubytesting$ cat -n freeze.rb 1 begin 2 a = [1,2,3].freeze 3 puts a 4 a << [4,7] # this raises an exception 5 puts a 6 rescue 7 puts "Exception <#{$!.class}> raised <#{$!}>" 8 end ~/rubytesting$ ruby freeze.rb 1 2 3 Exception <TypeError> raised <can't modify frozen array>
pp@nereida:~/LPPbook$ irb irb(main):001:0> irb(main):002:0* irb(main):003:0* quit lpp@nereida:~/LPPbook$ irb irb(main):001:0> q = "hello" => "hello" irb(main):002:0> q.freeze => "hello" irb(main):003:0> q.object_id => 70233414821660 irb(main):004:0> q += " world" => "hello world" irb(main):005:0> q.object_id => 70233414771300 irb(main):006:0> q.freeze => "hello world" irb(main):007:0> q << " world" TypeError: can't modify frozen string from (irb):7:in `<<' from (irb):7 from :0
No hay manera de descongelar un objeto sobre el que ha sido llamado
freeze
.