public Method

Object.freeze

obj.freeze     obj

Prevents further modifications to obj. A TypeError will be raised if modification is attempted. There is no way to unfreeze a frozen object. See also Object#frozen?.

a = [ "a", "b", "c" ]
a.freeze
a << "z"

produces:

prog.rb:3:in `<<': can't modify frozen array (TypeError)
 from prog.rb:3

Source Code

/*
*  call-seq:
*     obj.freeze    => obj
*  
*  Prevents further modifications to <i>obj</i>. A
*  <code>TypeError</code> will be raised if modification is attempted.
*  There is no way to unfreeze a frozen object. See also
*  <code>Object#frozen?</code>.
*     
*     a = [ "a", "b", "c" ]
*     a.freeze
*     a << "z"
*     
*  <em>produces:</em>
*     
*     prog.rb:3:in `<<': can't modify frozen array (TypeError)
*      from prog.rb:3
*/

VALUE
rb_obj_freeze(obj)
   VALUE obj;
{
   if (!OBJ_FROZEN(obj)) {
       if (rb_safe_level() >= 4 && !OBJ_TAINTED(obj)) {
           rb_raise(rb_eSecurityError, "Insecure: can't freeze object");
       }
       OBJ_FREEZE(obj);
   }
   return obj;
}
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.