gpt4 book ai didi

如果使用 <<,Ruby attr_reader 允许修改字符串变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:02:59 24 4
gpt4 key购买 nike

遇到一些奇怪的行为,想知道是否有其他人可以确认我所看到的。

假设您创建了一个带有成员变量的类,并允许使用 attr_reader 读取它。

class TestClass
attr_reader :val

def initialize(value)
@val = value
end
end

现在当我执行以下操作时,它似乎修改了@val 的值,即使我只授予它读取权限。

test = TestClass.new('hello')
puts test.val
test.val << ' world'
puts test.val

返回

hello
hello world

这只是我在 irb 中进行的一些测试的结果,所以不确定是否总是如此

最佳答案

你并不是真的在写 val 属性。您正在阅读它并在其上调用一个方法(“<<”方法)。

如果您想要一个访问器来防止您描述的那种修改,那么您可能想要实现一个返回 @val 副本的方法,而不是使用 attr_reader。

关于如果使用 <<,Ruby attr_reader 允许修改字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8002279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com