【发布时间】:2021-04-18 12:29:08
【问题描述】:
作为来自http://ruby.bastardsbook.com/chapters/io/的教程
file = File.open("sample.txt", 'r')
while !file.eof?
line = file.readline
puts line
end
这个方法放了每一行,但是当我替换了
while !file.eof?
与
unless file.eof?
循环只运行一次,为什么呢?
【问题讨论】:
-
请注意,传统的写作方式是
File.foreach("sample.txt"') { |line| puts line }。除其他外,IO::foreach 在返回之前关闭文件。 (你的代码最后需要file.close。)你可以写File.foreach...,而不是IO.foreach...,因为File.superclass #=> IO。请注意,foreach在没有块的情况下调用时会返回一个枚举器。这允许您将其链接到Enumerable方法(例如,File.foreach(fname).with_object({}) { |line,h| .... },这可能很有用。