[#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:42254] Re: File objectがいつのまにか nilに、

From: WATANABE Hirofumi <eban@...>
Date: 2006-05-23 06:36:24 UTC
List: ruby-list #42254
わたなべです。

しん <dezawa@aliadne.net> writes:

> こんなscriptを通します。
> 期待は、Jan というファイルに Jan が3行、Feb というファイルに Febが1行
> 出ることなのですが、1行書いたところでエラーとなります。
> 
> $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
> 
> $ruby files.rb
> files.rb:6: undefined local variable or method `ofp' for main:Object (NameError)
>         from files.rb:4:in `each'
>         from files.rb:4
> 
> Jan というファイルに Jan と 1行書かれておわり。
> ofp が nil になってしまっています。
> 
> なぜでしょう、、、

ofpがnilじゃなくてundefineなところに注目してほしいんですが、
この場合のofpはブロックローカルな変数だからエラーになってます。
eachの前で代入が必要です。たとえばofp = nilのように。

-- 
わたなべひろふみ

In This Thread