我正在使用 Ruby OptionParser 但无法弄清楚如何将非选项参数作为两个列表获取。
myscript --option-one --option-two file1 file2 -- file10 file11
有没有办法从 OptionParser 分别获取两个文件列表?
[file1, file2]
[file10, file11]
我不在乎它们中的哪一个保留在 ARGV 中,只想分别有两个列表以将它们提交给不同的处理。
我目前的解决方案是
添加
--
如下处理程序opts.on('--', 'marks the beginning of a different list of files') do ARGV.unshift(:separator) end
这将产生具有以下内容的 ARGV
[ file1, file2, :separator, file10, file11 ]
然后,在 OptionParser 之外并在
parse!
被调用之后,我修改ARGV
list1 = ARGV.shift(ARGV.index(:separator)) ARGV.shift
有没有更优雅的方式来完成它?