这对我来说似乎很奇怪:
f = File.open(Dir.pwd+'/tmp','r')
f.readlines do |l|
puts "#{f.lineno}:#{l}"
end
#=>["first line","second"]
为什么控制台中没有输出
1: first line
2: second line
这对我来说似乎很奇怪:
f = File.open(Dir.pwd+'/tmp','r')
f.readlines do |l|
puts "#{f.lineno}:#{l}"
end
#=>["first line","second"]
为什么控制台中没有输出
1: first line
2: second line
你想要each
而不是readlines
。
File.open(Dir.pwd+'/tmp','r') do |f|
f.each do |l|
puts "#{f.lineno}:#{l}"
end
end
readlines
一次读取整个数组。
在您的特定情况下,您调用readlines
以获取一个数组,但您将一个块传递给该readlines
方法。该方法readlines
只返回一个数组,它不处理块。您应该只向知道如何处理块的方法调用提供块。如果该方法无法处理块,则不会发生任何事情。
(旁白:如果您each
对结果进行 an 操作,readlines
那么您将在每一行上获得相同的行号。)