- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2行読み込んで一行戻り、また2行読み込む)
「2行読み込み、一行戻り、また2行読み込む」処理の実現方法
このQ&Aのポイント
- Rubyを使用して、「2行読み込み、一行戻り、また2行読み込む」処理を実現したい場合、以下のようなコードを使用します。
- ファイルをオープンし、`gets`メソッドを使用して一行ずつ読み込みます。
- `gets`メソッドで読み込んだ行の改行文字を削除するために、`chomp`メソッドを使用します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
逆にお聞きします。 1行「戻らないと」ダメなのですか? 例えば f = nil while g = file.gets do g.chomp! unless f.nil? then p f p g end f=g end と、前の行を変数に取っておく、という方法もあります。 どうしても戻るのなら、2行目を読む前にtell / posで場所を覚えてseek / posで移動するというのはありますが、何度もファイルを行き来して読むのは効率はよくないです。 file_position=0 while f = file.gets do f.chomp! file_positon = file.pos g = file.gets # ここでg==nil(→ファイルがfを読んだところで終り)のチェックが無いので # 次のchompで # abcde.rb:9: private method `chomp!' called for nil:NilClass (NoMethodError) #のエラーになってます g.chomp! p f p g file.pos = file_positon end
お礼
返信ありがとうございます。 変数でとっておくということも考えましたが、おっしゃるようにどうしても戻る必要がありました。 .pos .seek(i) というのがあったのですね。 エラーですが if g == nil then break を付けて直しました。 ありがとうございました。