From: nobu.nakada@... Date: 2000-01-25T07:39:41+09:00 Subject: [ruby-dev:9015] Re: [PATCH] Array#flatten! for recursive array なかだです。 At Tue, 25 Jan 2000 02:32:41 +0900, matz@netlab.co.jp (Yukihiro Matsumoto) wrote: > |b = [a = []]; a << b; a.inspect > | > |が SystemStackError になったりする(rb_protect_inspect(), > |rb_ary_includes() から呼ばれる a == b のところでお互いのシッポを > |追っかけあってるような状態)ので、パッチです。 > > これは取り込みます。そうか、そういう問題があったか。 あれだと、a == b がやっぱりうまく行きませんね。 Thread[__inspect_key__] を Array 自体から ID の配列にかえて Array#== を避けただけなので、当然ですが。 なんかもう、これについては一般的にうまい方法っていうのが思い付 きませんが、どうしたもんでしょう。単純に Array だけに絞れば、出て きた Array(の ID) と index のリストの対応を覚えておいて、その一致 性に置き換えればできそうですが、対応表を再帰的に渡すうまい方法が なさそうなのと、あまりにもオーバーヘッドが大きそうな点がためらわ れます。 というか、再帰的な Array の引き起こす問題っていうのは、もうライ ブラリレベルで面倒見切れる、見るべきものじゃないのかも。 -- そうだ 強気に ちょっと インチキに☆彡 中田 "Bugるくらいがちょうどいいかも;-)" 伸悦