稲葉です. やっぱりテストしないと間違えてます... Subject: [ruby-list:13643] Re: Dir.foreach From: kikutani / sprintmail.com Date: Tue, 13 Apr 1999 02:35:17 +0900 > On Tue, 13 Apr 1999 00:11:41 +0900, > Inaba Hiroto wrote: > > > たいしたことないでしょうけど、効率をいったら > > > > for i in > > Dir.glob("*").grep(/^\d+$/).filter{|s|s.to_i}.sort.filter{|i|i.to_s} > > ... > > end > > むずかしい... > なんでこれでソートできるのかわからない。 すみません, for loopで変数iは使われているので, filterのブロック変数に 使うとおかしくなるので. for i in Dir.glob("*").grep(/^\d+$/).filter{|s|s.to_i}.sort.filter{|n|n.to_s} ... end とかでないといけないですね. それから「Dir.glob("*").grep(/^\d+$/)」ま でで得られるArrayの要素に"00"とか"010"とかがないという仮定も必要です. もっというと, 1〜10000までファイルがあるディレクトリで3秒が2.5秒になる 程度の違いしかないですね^^; -- 稲葉 浩人 <inaba / sdd.tokyo-sc.toshiba.co.jp/inaba / st.rim.or.jp>