Ruby中的冻结对象
Ruby|冻结对象
在Ruby中冻结对象或实例意味着我们不允许将来对其进行修改。您可以这样一种方式来理解它:您不能更改其实例变量,不能向其提供单例方法,也不能冻结我们的类或模块,也不能添加,删除和带入某些变量。方法的变化。
如何在Ruby中冻结对象?
您可以通过调用Frozen方法冻结Ruby中的对象,该方法是Ruby库中ObjectClass中定义的方法。有没有一种方法,以解冻被冻结后的对象。
语法:
Object_name.freeze
如何检查物体是否冻结?
有一种非常简单的方法来检查对象是否冻结。您只需要调用冻结?Object类的方法。如果该方法返回true,则将冻结对象,否则不会冻结。
语法:
Object_name.frozen?
程序:
=begin
Ruby program to demonstrate frozen objects
=end
class Multiply
def initialize(num1,num2)
@f_no = num1
@s_no = num2
end
def getnum1
@f_no
end
def getnum1
@s_no
end
def setnum1=(value)
@f_no = value
end
def setnum2=(value)
@s_no = value
end
end
mul = Multiply.new(23,34)
mul.freeze
if(mul.frozen?)
puts "mul is frozen object"
else
puts "mul is not frozen object"
end
mul.setnum2=12
mul.setnum1=13
puts "Y is #{mul.getnum1()}"
puts "Z is #{mul.getnum2()}"输出结果
mul is frozen object can't modify frozen Multiply (repl):20:in `setnum2=' (repl):33:in `<main>'
说明:
在上面的代码中,您可以观察到借助Object.freeze方法已冻结了对象mul。我们收到一个称为FrozenError的错误,因为我们试图借助其他一些方法来更改冻结对象的变量。我们知道,冻结的对象的变量无法带来任何变化。