From: Dan Yamamoto Date: 2011-09-25T13:00:49+09:00 Subject: [ruby-list:48404] Re: 要素のない配列の挙動? だんです。 いややっぱり配列が絡むとややこしくなりますね。 以下のような代入によるaの内容の違い話かな… ちょっとややこしいですね。 a = ["hi", "hello"] x = a[0] p a a[0] = "bye" p a 2011年9月25日12:10 Dan Yamamoto : > だんです。 > > たぶんブロックは関係なくって、こうするとわかりやすいのではないでしょうか。 > > r = [1, 2, 3] > x = r > x = [3, 4, 5] > p r #=> ? > p x #=> ? > > また、配列を使わなくても同じ現象になります。 > > a = "hello" > b = a > b = "bye" > p a #=> ? > p b #=> ? > > > 2011年9月25日7:32 俊(とし) : >> 皆さま >> >> いろいろとご教示ありがとうございました. >> 私自身,これまでに何度もハマった罠だったことにようやく気がつきました. >> >> それにしても,Array#each は用心して使わなければなりません.私の落ちた >> 穴は,ブロックの中のローカル変数の参照先をいじっただけでは,もとの >> 配列の要素のオブジェクトは変化しないことに気づかなかったことだと >> 思います. >> -- >> 俊(とし) >> >> >> 2011年9月25日1:15 : >>> 野田と申します。 >>> >>> Array#newと絡めて書くと次のような違いということに >>> なると思うのですが(間違っていたらごめんなさい)。 >>> >>> r = [[], []] >>> r.each do |x| >>> p x >>> # x = [""] >>> x = Array.new >>> x.push("") >>> p x >>> end >>> p r >>> >>> r = [[], []] >>> r.each do |x| >>> p x >>> # x << "" >>> x.push("") >>> p x >>> end >>> p r >>> >>> On Sat Sep 24 22:52:24 JST 2011 >>> 俊(とし) wrote: >>> >>>> Array#new と関係ありますか? >> >> >