参照関係

参照に関してはJavaと似ている感じがする。

person1 = "Tim"
person2 = person1

puts(person1)
puts(person2)

person1[0] = "J"

puts(person1)
puts(person2)

こういう風に書くと出力結果は

Tim
Tim
Jim
Jim

となった。つまり"person1"も"person2"も同じ"Tim"というStringオブジェクトを指していて、どっちの変数から"Tim"を変更しても両方同じように変わるわけだ。
で、cloneに当たるのはdup

person1 = "Tim"
#オブジェクトをコピー(というか同じ内容で生成?)
person2 = person1.dup

puts(person1)
puts(person2)

person1[0] = "J"

puts(person1)
puts(person2)

結果はもちろん思ったとおりの

Tim
Tim
Jim
Tim #person2の値が変わらない

これはJavaと同じと考えて良さそうかな?メソッドの名前とかは違うけど。
というか、Stringオブジェクトを配列のように扱えるのは本当に便利!