From: dezawa Date: 2011-09-25T09:21:25+09:00 Subject: [ruby-list:48401] Re: 要素のない配列の挙動? --------------090801070500090207070001 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 私も何度もはまるんですが、これ > いろいろとご教示ありがとうございました. > 私自身,これまでに何度もハマった罠だったことにようやく気がつきました. でも > 穴は,ブロックの中のローカル変数の参照先をいじっただけでは,もとの > 配列の要素のオブジェクトは変化しないことに気づかなかったことだと > 思います. ではないです。 irb(main):001:0> a=[[1],[2]]  #=> [[1], [2]] irb(main):002:0> a.each{|r| r[0] += 1} #=> [[2], [3]] irb(main):003:0> a #=> [[2], [3]] r.each do |x| if x.empty? x = [""] # <== ここで、 end } x(すなわち r の要素)に 新しい object [""] が作られて代入されたのです                       出沢 # 私がようやくハマらなくなったのは # something = Hash.new([]) --------------090801070500090207070001--