まつもと ゆきひろです
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はしないようにしたいなあ.
まつもと ゆきひろ /:|)