ファイル内の各行を反復処理する必要があります。ただし、1 行読んだ後、次の行を先読みして、場合によっては何らかのアクションを実行する必要があります。
コマンドを使用するpeek
と、ファイルの 2 行目しか取得できません。ただし、next
コマンドを使用して反復子を移動すると、反復子もインクリメント.each
されます。私が言いたいことを理解するには、以下の 9 行のプログラムを実行し、出力を見てください。7行目をコメントアウトすると、ファイル全体が印刷されますが、peek
間違っています。7 行目のコメントを外したままにしておくと、peek は機能しますが、ファイルの半分しか印刷されません。
1 回だけインクリメントする方法が必要か、または を使用せずにファイルを反復処理する方法が必要です.each
。
これを行う最善の方法は何ですか?
#!/usr/bin/ruby
#1
curFile = File.open("testcase.rb") #2
line_enum = curFile.to_enum #3
curFile.each do |line| #4
puts "=> " + line #5
puts " peek > " + line_enum.peek #6
line_enum.next #7
end #8