コード
問題点
AというオブジェクトからBというオブジェクトに値を受け渡しするプログラムを書いているつもりだった。
値を渡しているつもりなので、Aの方で値を変えても、Bの方の値は動くはずないと思っていた。コードでいうところのcloneの方の挙動
しかし、実際にはAの値を変えるとBの方の値も変化する。コードでいうところのplainの方の挙動
理由
単純な話で、値を渡しているつもりが参照を渡していた。
「Ruby 配列 コピー」でググると一番上に出てくるリンクにも
Array#cloneないしはArray#dupを使います。
と書いてある。
この話って多分Ruby特有の話ではないと思うんですけど、実際にハマってみないと分からないもんですね。