ruby - 我如何在 Ruby 中组合 gets.chomp 和 ARGV?

标签 ruby

<分区>

我刚开始学习 ruby​​,目前坚持在同一个脚本中使用 ARGV 和 gets.chomp。

我希望脚本首先解压缩 3 个参数,然后我会问一个问题 (gets.chomp),然后打印包含 ARGV 和 gets.chomp 变量之一的字符串。在终端中,我将 ARGV 设置为一二三(示例:ruby file1.rb 一二三)。下面的代码示例:

first, second, third = ARGV

puts "Your first variable is: #{first}"
puts "Your second variable is: #{second}"
puts "Your third variable is: #{third}"

这完全符合我的预期。在终端中,它给我一、二和三作为第一、第二和第三个变量。

我添加了一个 puts“What is your favorite colour”并按预期打印出来,但是当我为输入设置 gets.chomp 时,出现错误。

first, second, third = ARGV

puts "Your first variable is: #{first}"
puts "Your second variable is: #{second}"
puts "Your third variable is: #{third}"

puts "What is your favourite colour? "
colour = gets.chomp  #this is where the error occurs

puts "So your favourite number is #{first} and you like the colour #{colour}."    

^底线是我要打印的内容,但在 gets.chomp 时出现错误

这是终端打印的内容:

$ ruby ex13.rb one two three
Your first variable is: one
Your second variable is: two
Your third variable is: three
What is your favourite colour? 
ex13.rb:8:in `gets': No such file or directory - one (Errno::ENOENT)
from ex13.rb:8:in `gets'
from ex13.rb:8:in `<main>'

我希望我已经充分解释了上面的内容,如果需要更多信息,请告诉我。

任何帮助将不胜感激!

谢谢,

最佳答案

我昨天回答了一个关于这个的问题,你可以阅读here ,但要具体解决您的情况:

first, second, third = ARGV之后,调用ARGV.clear将其清空。

或者你可以做 first, second, third = 3.times.map { ARGV.shift }

原因是 gets 从 ARGV 中读取,如果里面有任何东西的话。在调用 gets 之前,您需要清空 ARGV。

关于ruby - 我如何在 Ruby 中组合 gets.chomp 和 ARGV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578890/

相关文章:

ruby - 如何在 ruby​​ 调试器中运行 rspec Expect 语句?

ruby - 在 Linux 上从源代码安装 Ruby 2.4.1

ruby - 如何从 gem 内部引用文件

ruby-on-rails - 我应该使用什么 Ruby on Rails 图像库来制作词汇卡?

ruby-on-rails - 如何修复 "uninitialized constant User"

ruby - 显示 BigDecimal 到任意精度

ruby-on-rails - rails 命令问题

ruby - 相当于 ActiveRecord 的 `serialize` 方法的 Mongoid

css - Jekyll 和自定义 CSS

jquery - 使用 rails-Ajax 调用 Controller 方法?