我想取一個對象,然後在一個方法中修改另一個對象,但它沒有返回更新後的值。這是最好的例子來說明:使用遠程方法修改對象
@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