ruby无法保护@变量么?

浏览:34日期:2022-10-20

问题描述

看到一个例子,是有这个问题还是我理解不到位呢?

class LoadPaths # ... def initialize @paths = [] end def push(*paths) @paths.push(*paths) end def inspect p @paths endenda = LoadPaths.newx = a.push(1)x.push 2a.inspect

问题解答

回答1:

实例方法操作实例变量,有什么问题?

回答2:

这样完全没有问题啊.容易引起问题的是这种:

class A def count @count ||= 0 @count += 1 endenda = A.newa.count # => 1a.instance_variable_set(:@count, 10)a.count # => 11

其中instance_variable_set可以修改对象内的实例变量 ~ ~当然, 也可以理解为 Ruby 的强大之处!!!

相关文章: