[#47049] fileのopenに関する動作についての質問 — 高橋作郎 <sakurou3960@...>

はじめまして。

14 messages 2010/05/04

[ruby-list:47053] Re: fileのopenに関する動作についての質問

From: "Hideo Konami" <konami@...>
Date: 2010-05-04 14:31:00 UTC
List: ruby-list #47053
小波です。

>高橋です。

>ちなみに、このやり方でループを作成するとdatファイルが奇数行しかないと
>エラーが出るという考え方でよろしいでしょうか?
>(datファイルを奇数行にして実行してみると確かにエラーが出ました。その原因は
>whileに与えた line=f.gets が偽になるからですか?)

エラーメッセージをきちんと読んでますか?簡単な英語ですから,
億劫がらずに読みましょう。行番号とファイル名を除き,
次のようになっているはずです。

w.rb:6: private method `chomp' called for nil:NilClass (NoMethodError)
	from w.rb:3:in `open'

chomp が nil に対して呼ばれたと指摘しているのです。次のように
考えてください。

行数が奇数だと,while の後の line = f.gets は真を与えます。
しかし, ループ中の f.gets の読み込みは失敗して,nil を
与えます。さて, f.gets.chomp はどうなりますか?



なお,Ruby では nil, false 以外の何らかの値は真として扱われる
ことを覚えておきましょう。





In This Thread