Rob*_*bin 6 ruby instance-variables
进入一些奇怪的行为,并想知道是否有其他人可以确认我所看到的.
假设您使用成员变量创建一个类,并允许使用attr_reader读取它.
class TestClass
attr_reader :val
def initialize(value)
@val = value
end
end
Run Code Online (Sandbox Code Playgroud)
现在当我执行以下操作时,它似乎修改了@val的值,即使我只授予它读取权限.
test = TestClass.new('hello')
puts test.val
test.val << ' world'
puts test.val
Run Code Online (Sandbox Code Playgroud)
这回来了
hello
hello world
Run Code Online (Sandbox Code Playgroud)
这只是我在irb中进行的一些测试的结果,所以不确定是否总是如此
你并没有真正写出val属性.您正在阅读它并在其上调用一个方法('<<'方法).
如果您想要一个阻止您描述的修改类型的访问器,那么您可能希望实现一个返回@val副本而不是使用attr_reader的方法.
| 归档时间: |
|
| 查看次数: |
2760 次 |
| 最近记录: |