オブジェクトを取得して、メソッド内で別のオブジェクトを変更しようとしていますが、更新された値が返されません。これは、例によって最もよく説明されています。
@testobject = "This is a string."
handler=Handler.new
handler.load(@testobject)
puts @testobject
=> "This is a string."
ハンドラ.ロード:
def load(@testobject)
@testobject = @testobject + " Modified!"
end
これはオブジェクトのスコープに関係していると確信していますが、元のオブジェクトを他のクラスからアクセス可能にして変更可能にする方法については困惑しています。
編集:これはおそらく悪い例です。変数/オブジェクトスコープがどのように機能するかを理解するために文字列を使用していますが、実際のプログラムでは文字列ではありません。
具体的には、使用しているオブジェクト (「ストリーム」) があります。次に、プラグインのような「ハンドラ」オブジェクトがあり、それぞれが最初の「ストリーム」オブジェクトを変更する必要があります。ハンドラーごとに、handler.load を呼び出し、適切なメソッドを実行して「ストリーム」オブジェクトの設定を変更します。