LRTHW练习20个怪输出

时间:2014-11-06 16:43:36

标签: ruby powershell output

在本练习中,我完美地编写了所有代码,甚至通过字面复制和粘贴书中的代码(Learn Ruby the Hard Way)进行了双重检查。出于某种原因,当我调用print_a_line()函数时,它不会打印出我经过的current_line参数,直到第3次调用它将在行之前打印3。是否有一些我在这里错过的IO流的刷新或者Powershell的一些细微差别?

我在Windows 8 64位计算机上运行Ruby 2.0.0p576(x64)。

代码:

input_file = ARGV.first

def print_all(f)
  puts f.read
end

def rewind(f)
  f.seek(0)
end

def print_a_line(line_count, f)
  puts "#{line_count}, #{f.gets.chomp}"
end

current_file = open(input_file)

puts "First let's print the whole file:\n"

print_all(current_file)

puts "Now let's rewind, kind of like a tape."

rewind(current_file)

puts "Let's print three lines:"

current_line = 1
print_a_line(current_line, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

1 个答案:

答案 0 :(得分:1)

我删除了test.txt文件并从头开始重新创建它,这使代码完美运行。我不是百分之百的原因,但我有一种预感,即通过在许多不同的测试中重复使用该文件并在Powershell中玩游戏,我无意中在文件中留下了一些奇怪的格式,导致它表现不同。