【问题标题】:Start Command Prompt with Ruby doesn't work使用 Ruby 启动命令提示符不起作用
【发布时间】:2017-10-23 16:44:08
【问题描述】:

我无法在 Windows 上使用 Ruby 启动命令提示符来使用它。 我得到了这个简单的程序:

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?

这就像“gets”命令没有被识别。为什么会这样?

【问题讨论】:

标签: ruby


【解决方案1】:

看起来您(不知何故)在命令行上两次传递了您的程序名称。当您运行时,您描述的行为是可重现的

ruby program.rb program.rb

这是因为gets 并非在所有情况下都从STDIN 读取。相反,它更喜欢先读取命令行中提到的文件。仅当命令行上没有附加文件时,gets 才会回退到从STDIN 读取

不幸的是,为什么您两次传递 ruby​​ 程序的文件名的问题不太清楚。如果您不是自己这样调用它,这可能是由您的 shell 中的一些奇怪的环境选项或您的 Ruby 设置引起的。

【讨论】:

    【解决方案2】:

    我也很好奇,发现了这个链接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 
    

    【讨论】:

    • 不过,命令提示符应该等待我的输入。我想输入我的名字,但它不会等待,只是打印出文本。我真的不明白为什么。
    • 在您的控制台 (irb)... 尝试执行此操作... def test 输入“你叫什么名字?” name = gets puts "Hello" + name.chomp + "。你好吗?" end 然后运行测试。它对我有用。
    • 我还用代码制作了一个 test.rb... 输入“你叫什么名字?” name = gets puts "Hello" + name.chomp + "。你好吗?" ...它工作> ruby​​ test.rb
    【解决方案3】:

    @Ray Ban 我用过你的代码

    puts "Whats your name?"
    name = gets
    puts "Hello" + name + ". How are you?"
    

    在gets.rb 文件中并使用$ ruby​​ gets.rb 运行它,它按预期工作。

    我正在使用 ruby​​-2.3.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-15
      • 2018-06-20
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 2018-02-25
      相关资源
      最近更新 更多