Objetos de congelación | Ruby

Cualquier objeto se puede congelar invocando Object#freeze . Un objeto congelado no se puede modificar: no podemos cambiar sus variables de instancia, no podemos asociarle métodos singleton y, si es una clase o un módulo, no podemos agregar, eliminar o modificar sus métodos. 
Para probar si un objeto está congelado, podemos usar Object#frozen. Devuelve verdadero en caso de que el objeto esté congelado, de lo contrario, devuelve un valor falso . El método de congelación en objeto nos permite convertir un objeto en una constante. 
Tenga en cuenta que un objeto congelado no se puede descongelar. 
 

Syntax: ObjectName.freeze

A continuación se muestra el ejemplo para comprender mejor: 
Ejemplo: 
 

Ruby

# Ruby program of freezing object
 
# define a class
class Addition
   # constructor method
   def initialize(x, y)
      @a, @b = x, y
   end
 
   # accessor methods
   def getA
      @a
   end
   def getB
      @b
   end
 
   # setter methods
   def setA=(value)
      @a = value
   end
   def setB=(value)
      @b = value
   end
end
 
# create an object
add = Addition.new(10, 20)
 
# let us freeze this object
add.freeze
if( add.frozen? )
   puts "Addition object is frozen object"
else
   puts "Addition object is normal object"
end
 
# now try using setter methods
add.setA = 30
add.setB = 50
 
# use accessor methods
add.getA()
add.getB()
 
puts "A is : #{add.getA()}"
puts "B is : #{add.getB()}"

Producción : 
 

El objeto Addition es un objeto congelado 
main.rb:20:in `setA=’: no ​​se puede modificar Addition congelado (RuntimeError) 
desde main.rb:39:in `’

En el ejemplo anterior, se crea una clase Addition y luego creamos un nombre de objeto add . al usar el método add.freeze , el objeto se congela ahora, no podemos cambiar el valor de su método. Toma, ¿añadir congelado? El método se utiliza para mostrar que el objeto está congelado o no.
 

Publicación traducida automáticamente

Artículo escrito por DivyaPareek y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *