对 ruby 基础教程的书中代码进行了改写,其功能是计算文本的行数,但是我将变量 ltotal 放置在不同位置的时候显示不同的值,具体的代码如下所示:
ltotal = 0
ARGV.each do |file|
begin
input = File.open(file)
l = 0
input.each_line do |line|
l += 1
#ltotal += l #最终执行结果为153
end
input.close
ltotal += l #最终执行结果为17
rescue =>e
puts "#{e.message}"
end
end
puts ltotal
将上述代码存储为 wc.rb 文件,在终端执行 ruby wc.rb wc.rb,按照如上的代码,执行结果为 17,和实际情况相符。但是将代码 ltotal += 1 置于 input 这个块内部,那么这个结果将会变为 153,不知道问题出现在哪里,请帮忙指教。