まくまくRubyノート
文字列をコピーする (dup)
2011-10-10

Ruby では、文字列変数を下記のように代入すると、参照を代入することになります。 つまり、s1s2 の参照先として、同じ文字列情報を指すようになるだけで、文字列の実体がコピーされて2つに増えているわけではありません。

s1 = 'AAA'
s2 = s1

s1s2 は同じ実体を指し示しているので、どちらかから文字列を操作すると、両方から見える文字列が変化することになります。

s1[0] = 'B'

s1  # => "BAA"
s2  # => "BAA"

文字列の実体をコピーして、別々の文字列情報として保持するには、dup メソッドで文字列をコピーします。

s1 = 'AAA'
s2 = s1.dup
s1[0] = 'B'

s1  # => "AAA"
s2  # => "BAA"
2011-10-10