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