4

我有一个名为 的 Ruby 脚本,foobar.rb它接受多个参数。

我希望(可选)能够在命令行上指定一个整数数组,并能够将它们作为单个选项进行处理。我认为我的命令行看起来像这样:

foobar.rb [1,2,3]

在 1 到 10 的范围内,我对 Ruby 的了解可能在 6 左右。足以知道可能有一种简单的方法可以完成此任务,但还不足以知道它是什么,甚至还不足以知道在文档中的位置。

如何解析这个以逗号分隔的整数列表并Array在代码中以 a 结尾?如果存在这样的解决方案,我更喜欢不需要添加任何外部库的 idomatic 1-liner 解决方案。

4

2 回答 2

12

我会optparse自己使用它,如下所示:

require 'optparse'

options = {}

OptionParser.new do |opts|
  opts.banner = "Usage: #{$0} [options]"

  opts.on("-a", "--argument a,b,c", Array, "Array of arguments") { |a| options[:array] = a.map { |v| v.to_i } }
end.parse!

puts options.inspect

  => {:array=>["1", "2", "3", "4"]}
于 2012-11-08T17:05:54.390 回答
3

如果您使用 bash 作为终端,这应该可以:

integer_array = ARGV[0].scan(/\d/).map(&:to_i) # => Array containing 1,2,3

用 zsh 尝试过,它崩溃了,因为 zsh 尝试[]在命令行上解释

对于 zsh,您必须使用

foobar.rb "[1,2,3]"
于 2012-11-08T17:02:59.280 回答