Ruby 参照の値渡し
マニュアルのStringの項でも、(そのものの名前は書いていないが、例が)最初の方に書いてるし、これを勘違いして間違うの恥ずかしいよね、と思ったら過去自分が書いたコードで以下のような間違いをしていたのを見つけた。
間違っていても影響がないところだったのでよかったが、我ながらショック・・・。
Rubyist Magazine - 値渡しと参照渡しの違いを理解する
間違った例
a = 'aaa' b = a b.gsub!('a', 'b') puts a, b #=> bbb bbb
こんな用途で使いたいなら、dup で OK。
instance method Object#clone (Ruby 2.2.0)