我想取一个对象,然后在一个方法中修改另一个对象,但它没有返回更新后的值。这是最好的例子来说明:使用远程方法修改对象
@testobject = "This is a string."
handler=Handler.new
handler.load(@testobject)
puts @testobject
=> "This is a string."
handler.load:
def load(@testobject)
@testobject = @testobject + " Modified!"
end
我敢肯定,这与对象的范围做,但我难倒如何使原始对象可由其他类访问和修改。
编辑:这可能是个不好的例子。我使用一个字符串来帮助我理解变量/对象作用域是如何工作的,但在我的实际程序中,它不是字符串。
更具体地说,我有一个对象(“流”),我正在使用。然后我有一个“处理器”对象,就像一个插件,每个对象都需要修改第一个“流”对象。对于每个处理程序,我想调用handler.load,让它运行适当的方法来更改“流”对象上的设置。
完美。事实上,一个对象只能通过他们的方法进行修改,这对我来说非常有帮助。谢谢! – Jericon 2013-03-01 20:31:39
从@testobject'+'_is_ a [方法](http://www.ruby-doc.org/core-2.0/String.html#method-i-2B),它只是产生一个新的对象,并没有修改@testobject。 '<<'方法会改变@testobject。 – steenslag 2013-03-01 22:06:33