From: Shashank Date Date: 2003-07-07T05:33:04+09:00 Subject: Re: Freezing an arbitary object "Aryeh M. Frierdman" > foo=1 > test.invariant(foo) > foo+=1 # should produce an error and exit This will work like you want if you make foo = [1,2,3] test.invariant(foo) foo[0] = 2 Now, with foo = 1 even foo.freeze will not work: #------------------------------------------------------------- C:\>ruby -ve "foo = 1; foo.freeze; foo = 2; puts foo; " ruby 1.8.0 (2003-06-23) [i386-mswin32] 2 C:\>ruby -e "foo = [1]; foo.freeze; foo = 2; puts foo; " 2 C:\>ruby -e "foo = [1]; foo.freeze; foo[0] = 2; puts foo; " -e:1:in `[]=': can't modify frozen array (TypeError) from -e:1 #------------------------------------------------------------- HTH, -- shanko