问题描述
看到一个例子,是有这个问题还是我理解不到位呢?
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 的强大之处!!!