参照関係
参照に関しては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オブジェクトを配列のように扱えるのは本当に便利!