我无法在Windows上使用Ruby的Start Command Prompt工作。 我有这个简单的程序:
puts "Whats your name?"
name = gets
puts "Hello" + name + ". How are you?"
但如果我用" ruby program.rb"来调用它,而不是等待我的输入,它只是打印出来:
Whats your name?
Helloputs "Whats your name?"
. How are you?
就像"得到"命令未被识别。为什么会这样?
答案 0 :(得分:3)
看起来你(在某种程度上)在命令行上传递了你的程序名两次。运行时,您描述的行为是可重现的
ruby program.rb program.rb
这样做的方式与gets
在所有情况下都不会从STDIN
读取的方式相同。相反,它更喜欢首先读取命令行中提到的文件。仅当命令行中没有其他文件时,gets
才会回退到STDIN
遗憾的是,关于为什么要将ruby程序的文件名传递twi次的问题不太清楚。如果您不是自己调用它,这可能是由shell中的一些奇怪的环境选项或Ruby设置引起的。
答案 1 :(得分:1)
我也很好奇,发现了这个链接How does gets and gets.chomp in ruby work? 显然它创建了一个新行,因此无法找到名称。
这似乎有效,(按照链接中的说明)
puts "Whats your name?"
name = gets
puts "Hello " + name.chomp + ". How are you?"
玩得开心。
此外,如果您开始使用rails,您也可以在控制台中进行测试 示例
> def test1
> ...code ..
> end
> test1
答案 2 :(得分:1)
@Ray Ban我使用了你的代码
puts "Whats your name?"
name = gets
puts "Hello" + name + ". How are you?"
在gets.rb文件中并使用$ ruby gets.rb运行它并按预期工作。
我正在使用ruby-2.3.0