在本练习中,我完美地编写了所有代码,甚至通过字面复制和粘贴书中的代码(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)
答案 0 :(得分:1)
我删除了test.txt文件并从头开始重新创建它,这使代码完美运行。我不是百分之百的原因,但我有一种预感,即通过在许多不同的测试中重复使用该文件并在Powershell中玩游戏,我无意中在文件中留下了一些奇怪的格式,导致它表现不同。