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

はじめまして。

14 messages 2010/05/04

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

From: "Hideo Konami" <konami@...>
Date: 2010-05-04 12:18:08 UTC
List: ruby-list #47050
小波と申します。

>高橋作郎と申します。

>:質問: *.dat というファイルからの読み込みにおいて、奇数行目と偶数行目を
>それぞれわけて配列を 作成するというサンプルスクリプトを見ても、何故それぞれ
>きちんと分かれるのか理解できません。

>  open("q.dat", "r") do |f|
>    while line = f.gets
>      qz[n] = line.chomp
>      ans[n] = f.gets.chomp
>      n += 1
>    end
>  end

f.gets はファイルから1行*ずつ*読み込んでいきます。
そこで
while line = f.gets
ではファイルからの1行読み込みを試みて,成功したらループに
入ります。そこで 
ans[n] = f.gets.chomp 
が実行されるとまた1行読み込みが実行されるわけですから,
結局2行が読み込まれるわけですね。

こういうときには,ソースの中に,f.gets の動作を確かめる
ための行を挿入して考えてみましょう。

puts line を2行目の後に,
puts ans[n] を4行目の後に。

他にも確かめる方法はいろいろあるでしょう。irb を使うのも
いい考えだと思います。とにかくいろいろと工夫してプログラ
ムをいじりましょう。









In This Thread