Utilice el método freeze en Ruby

Hassan Ejaz 15 febrero 2024
Utilice el método freeze en Ruby

Este artículo presentará cómo podemos usar el método freeze para objetos en Ruby.

Utilice el método freeze en Ruby

Podemos usar el método freeze en Ruby cuando ya no queremos alterar un objeto y queremos asegurarnos de que no se pueda modificar. Podemos generar rápidamente objetos inmutables usando este método.

El programa mostrará un error si intentamos alterar un objeto sobre el que se aplica el método freeze. A continuación se muestra un caso de uso del método freeze con una matriz.

# Ruby

fruits = ["orange","banana","strawberry"]

fruits.freeze

fruits <<"watermelon"

Obtendremos un error cuando intentemos ejecutar este código. En el caso de una cadena, el uso del método freeze se muestra a continuación.

# Ruby

str = "Hey"

str.freeze

str <<" How are you?"

Esto también mostrará errores de tiempo de ejecución. En el caso de un objeto, el uso del método freeze se muestra a continuación.

# Ruby

class Fruits
    def initialize(name)
        @name = name
    end

    def get_name
        return @name
    end

    def set_name(name)
        @name = name
    end
end

a = Fruits.new("apple")

a.freeze
a.set_name("melon")
puts a.get_name

Producción:

método freeze en Ruby

En los ejemplos anteriores, ocurrió un error porque habíamos intentado alterar objetos cuando ya estaban congelados por el método freeze.

Limitaciones del Método freeze en Ruby

Existen algunas limitaciones en el método freeze. Es fundamental entender que podemos modificar variables relacionadas con objetos congelados.

Esto se debe a que solo hemos congelado los objetos usando este método. Las variables que están relacionadas con esos objetos pueden modificarse libremente.

Aquí hay un ejemplo que ilustra cómo podemos cambiar un objeto congelado a algo nuevo accediendo a la misma variable.

# Ruby

str = "Hey James"
str.freeze

str = "Hey Petr"

puts str

Producción:

limitaciones del método freeze en Ruby

Podemos utilizar el método freeze para comprobar si un objeto es inmutable.

# Ruby

str2 = "Hey Julia"

str2.freeze

str4 = "Julia is very nice"

num = 120.5

num.freeze

Artículo relacionado - Ruby Method