Ruby · Essencial · Inglês · Técnico
freeze
Método que torna um objeto imutável: depois dele, qualquer alteração lança FrozenError. É raso: os objetos dentro de um array congelado continuam mutáveis.
Onde usar
Aparece em constantes e objetos de valor para evitar mutação acidental, e na regra de frozen string literal. Congelar cedo ajuda a achar bugs de estado compartilhado.
Em código
nomes = ["ana"].freeze
p nomes.frozen? # => true
copia = nomes.dup
p copia.frozen? # => false
copia << "bia"
p copia.size # => 2
nomes << "x" # => FrozenErrorExemplos
Freeze the constant so nobody changes it.
Congele a constante para ninguém alterá-la.
Freeze the array, but the strings inside stay mutable.
Congele o array, mas as strings dentro continuam mutáveis.
Cuidado
Não é profundo: congelar um array não congela as strings dentro dele. Para uma cópia mutável use dup, que descongela.
Sinônimos
congelar