我试图在file.each_line
后立即执行file.each_char
,但是当它像这样时,它永远不会被调用。如果我摆脱了file.each_line
,file.each_char
调用可以完美运行。
这是我的代码供参考:
file.each_line do |line|
if line =~ /^s*$/
next
end
lines += 1
end
file.each_char do |char|
if char =~ /s/
next
end
chars += 1
end
如何在file.each_line
后立即管理file.each_char
呼叫?
当你运行 each_line
时,它会让它指向 IO 流的末尾(在本例中为文件)。若要再次循环访问整个文件,需要将其重置为指向流的开头。 IO#rewind
将为您执行此操作:
file.each_line do |line|
if line =~ /^s*$/
next
end
lines += 1
end
file.rewind
file.each_char do |char|
if char =~ /s/
next
end
chars += 1
end