为什么Ruby中的gets返回零

3
我有一个简单的方法。
def save_logline
  print "What's the name of the movie"
  movie_name = gets.strip
  print "And what is your precious logline?"
  logline = gets.strip
  File::open(movie_name + '.txt', 'w') do |f|
    f.write(logline)
  end
end

每次我运行代码时,我会收到第一个提示,在这里我输入电影的名称,但是一旦我按下回车键,第二个打印语句就会被调用,给我这条消息。
And what is your precious logline?=> 0

文件已写入,但是我无法向文本文件中插入任何内容。我的逻辑出了什么问题?如何解决?我正在使用带有Ubuntu的RubyMine中的irb。
编辑:由于其他用户对我的代码有效以及我在另一台开发机器上的测试,我的代码只是在那台计算机上无效。我唯一能说的是我正在使用RubyMine的irb控制台。现在的问题必须是RubyMine是否存在问题,还是我的开发机器存在更大的问题?
最终编辑:我检查了我的第二台具有RubyMine的电脑,似乎它在RubyMine的irb控制台中也不能工作。我将要发布错误报告到RubyMine,并在一两天内给予Jeremy信用,除非有人知道为什么RubyMine的irb表现出奇怪的行为。

在我的电脑上没有显示 => 0。你是在 irb 中执行吗?如果是,你应该写出来。 - sawa
1个回答

4
你的代码是可以运行的。 0f.write 的返回值。它表示没有任何输入被写入到你的文件中,因此写入了零字节。

编辑:也许你不小心按了两次回车键...


我会在一两天内给你信用,除非有人知道为什么RubyMine有问题。感谢关于返回零的信息。我一直在想那是什么。 - thank_you
RubyMine没有真正的终端,因此gets的行为可能会有所不同。 - CrazyCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接