冷冻物体| Ruby

2023-10-07 12:37

任何对象都可以通过调用 Object#freeze 来冻结。冻结对象无法修改:我们无法更改其实例变量,无法将单例方法与其关联,并且如果它是类或模块,则无法添加、删除或修改其方法。
要测试对象是否被冻结,我们可以使用Object#frozen。如果对象被冻结,则返回 true,否则返回 false 值。对象中的 freeze 方法允许我们将对象变成常量。
请注意,冻结的物体无法解冻。

语法:ObjectName.freeze

这里有一个示例可以更好地理解:
示例:

Ruby
#冻结对象的Ruby程序
​
# 定义一个类
类加法
# 构造方法
def 初始化(x,y)
@a,@b = x,y
结尾
​
# 访问器方法
定义获取A
@A
结尾
定义获取B
@b
结尾
​
# 设置方法
Def setA=(值)
@a = 值
结尾
def setB=(值)
​​​​@b = 值
结尾
结尾
​
# 创建一个对象
添加 = 加法.new(10, 20)
​
# 让我们冻结这个对象
添加冻结
if( 添加. 冻结? )
提出“添加对象是冻结对象”
别的
提出“加法对象是普通对象”
结尾
​
# 现在尝试使用 setter 方法
添加.setA = 30
添加.setB = 50
​
# 使用访问器方法
添加.getA()添加.getB()
​
提出“A是:#{add.getA()}”
放置“B 是:#{add.getB()}”


输出:

在上面的例子中,创建了一个类Addition,然后我们创建了一个名为add的对象。通过使用 add.freeze 方法,对象现在被冻结,我们无法更改其方法的值。在这里,add.frozen? 方法用于显示对象是否被冻结。