[#42243] コミュニティと宗教の分離について — Beyond <beyond@...>

14 messages 2006/05/21

[#42267] メニューのループについて — リックス <rubyer4649@...>

りっくすです

21 messages 2006/05/27

[#42301] Re: メニューのループについて — "conundrum /" <conundrum@...>

conundrumです。

11 messages 2006/05/28

[ruby-list:42258] Re: Fileobject がいつのまにかnilに、

From: Sako Hiroshi <sakoh@...2.so-net.ne.jp>
Date: 2006-05-23 07:09:47 UTC
List: ruby-list #42258
酒匂です。

ofp が nil になる件に関しては、皆さんのご指摘通りだと思います。

で、ちょっと話は横道に逸れますが、もともとのプログラムの書き方を
工夫すれば、そもそも ofp や ofile などの変数を使わずに済ませることもできます。

At 15:15 06/05/23, しん wrote:

>$cat files.rb
>alist = ["Jan","Jan","Jan","Feb","Mar","Apr","May","Dec"]
>
>ofile=""
>alist.each{|file| 
>   if ofile != file
>        ofile != "" && ofp.close   
>        ofile = file
>      ofp = open(ofile,"w")
>   end     
>   ofp.printf "%s\n",file
>}
>ofp.close

これを open のブロックを使って、以下のように書くこともできますね。

alist = ["Jan","Jan","Jan","Feb","Mar","Apr","May","Dec"]
alist.uniq.each {|file|
  File.open(file, "w") {|f|
    f.printf("%s\n",file)
  }
}

重複を取り除く部分が uniq で互換になるのかという問題もありますけどね。
まあこれはもともとの仕様しだい。

イテレータは ruby を使う場合の醍醐味の一つでもあります。 



In This Thread