From: "俊(とし)" Date: 2011-09-25T14:01:29+09:00 Subject: [ruby-list:48408] Re: 要素のない配列の挙動? > r = [1, 2, 3] > x = r > y = r[0..-1] > x = [3, 4, 5] > r = [5, 6, 7] > p r #=> [5, 6, 7] > p x #=> [3, 4, 5] > p y #=> [1, 2, 3] > r = [5, 6, 7] のところで新しい配列オブジェクトが作られてしまっています。 いえ,これはそのように意図して r が新しいオブジェクトを参照するようにしたつもりです. そうなる前に,y に内容をコピーしておけば,あとから y で参照できる,ということを 示したかったものです. > あとdupやcloneでは、コピーで新しいオブジェクトを作れれますよー。 るりまの Array#dup のところの例を見ると,ポインタのコピーのように見えるのですが. 配列オブジェクトを指すポインタオブジェクトは新しく作られますが(dup と clone で若干差は あるようですが),配列オブジェクトそのものは元のものが一つあるだけだと思うのですが. ary = ['string'] p ary #=> ["string"] copy = ary.dup p copy #=> ["string"] ary[0][0...3] = '' p ary #=> ["ing"] p copy #=> ["ing"] -- 俊(とし)