我有一个名为“file1.txt”的文件:
Ruby
programming
is fun
在我从IRB打电话的files.rb中,我有:
File.open('file1.txt', 'r') do |file|
while line = file.gets
puts "** " + line.chomp + " **" #--> why can't I use file.gets.chomp?
end
end
第3行为什么line
和file.gets
不可互换?如果我用line
切换file.gets
,该功能不起作用,考虑到这一点,我有点困惑
line = file.gets
和
file.gets = line
应该可以互换,但在这种情况下,它并不是因为它给我一个错误。该功能适用于line.chomp
。
我尝试删除while
代码块,只需编写
puts file.gets
它似乎从file1.txt输出一行代码,但在第3行的while
语句中不起作用。
答案 0 :(得分:1)
我并不真正进入 Ruby ,但我认为这是因为如果您使用while line = file.gets
,file.gets
会返回一行并读取(并复制到缓冲区)下一个。在最后一次迭代中,while位于最后一行,while line = file.gets
将返回最后一行。但是在那段时间里,你再次调用file.gets
,因为文件中没有其他行,它会返回错误。
答案 1 :(得分:1)
这是未经测试的,但您的代码可以简化为:
File.foreach('file1.txt') do |line|
puts "** " + line + " **"
end