我正在尝试在 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
关于ruby - file.each_char 在 Ruby 中的 file.each_line 之后不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5993557/