Effective Rubyの勉強メモです。
【目次】
- コレクションをメソッドに渡すときの注意
- 破壊的メソッドを使わない対処法
- コレクションをコピーしておく
- ディープコピーする
コレクションをメソッドに渡すときの注意
rubyでは、コレクション(例えば配列)をメソッドの引数に渡したとき、メソッド内ではどのように配列を参照しているのでしょうか?
実はrubyではメソッドに渡された配列は参照渡しされます。
参照渡しとは、オブジェクトそのものではなく、オブジェクトへの参照を渡すことです。オブジェクトはメモリ上のどこかに格納されており、そのメモリ上のどこを参照しているかのアドレスをメソッドに渡します。
すなわち
a = [1, 2, 3] def address(object) object.object_id end p a.object_id p address(a)続きを読む