Method: Array#freeze

Defined in:
array.c

#freezeself

Freezes self (if not already frozen); returns self:

a = []
a.frozen? # => false
a.freeze
a.frozen? # => true

No further changes may be made to self; raises FrozenError if a change is attempted.

Related: Kernel#frozen?.

Returns:

  • (self)


641
642
643
644
645
646
647
648
649
650
651
652
653
# File 'array.c', line 641

VALUE
rb_ary_freeze(VALUE ary)
{
    RUBY_ASSERT(RB_TYPE_P(ary, T_ARRAY));

    if (OBJ_FROZEN(ary)) return ary;

    if (!ARY_EMBED_P(ary) && !ARY_SHARED_P(ary) && !ARY_SHARED_ROOT_P(ary)) {
        ary_shrink_capa(ary);
    }

    return rb_obj_freeze(ary);
}