まつもと ゆきひろです

In message "[ruby-list:3076] [BUG?] Hash::delete"
    on 97/06/05, Akinori ITO <aito / ei5nazha.yz.yamagata-u.ac.jp> writes:
|
|あ伊藤です。 ruby のバグ報告です。
|
|Hash::each のイテレータブロックの中で、パラメータとして渡された
|キーを delete で削除すると、ruby が core dump します。
|
|$ cat test.rb
|a = {"a"=>1,"b"=>2,"c"=>3}
|a.each do |k,v|
|  a.delete(k)
|end

すんません.これは一種の仕様です.Array,Hashのイテレータの中
での要素の削除は出来ません.更に言えば,一般的にCollection系
のイテレータブロック内での要素の削除は保証されていないんです.

こういう場合は

  a.keys.each do |k|
    ..
  end

という感じでお願いします.
# しかし,せめてcore dumpはしないようにしたいなあ.

                                まつもと ゆきひろ /:|)