From: "Y. NOBUOKA" Date: 2011-01-27T21:34:57+09:00 Subject: [ruby-dev:43128] Re: Hashのイテレーション中の新規キー追加 畠山さん 信岡です。 > ただsuper(key,val)の時点でself.keysは更新されていると > 思いますので、 > > super( key, val ) > #if @keys and not self.has_key? key then > if @keys then > > で良いかと思います。 ああっ、ほんとですね。 指摘ありがとうございます。 自分でコードを書いているときは if 文の後に super( key, val ) を書いていたのですが、 メールに書く段階で 「先に super の呼び出しをした方がいいかな」 と思って 変更したのが裏目に出てしまいました。 このままだと、既に存在するキーに値を代入すると、再度 (または 2 回) イテレーションの 対象要素になってしまうので、実際に使用するのでしたら適当に改良を行ってください汗 (if 文の後で super の呼び出しを行うと問題はないかと思います。) > しかしギブスでプロが目指せるわけでもなく、根本の解決で > はないと思うので、続けてパッチを考えてみようと思います。 確かに実行速度などを考えると Ruby で実現するのではなくて 組み込みの機能としてイテレーション中のハッシュへの要素追加ができたほうが嬉しいですね。 -- 信岡 ゆう (NOBUOKA Yu) http://www.vividcode.info/