这是 OptionParser 的精简版
OptionParser.new do |opts|
opts.on('-f', '--format FORMAT', 'output format (text, html, yml, json, xml)') do |format|
options['format'] = format
end
end
这是格式选项的试用版
[16] pry(main)> parse("-f s")
=> {"format"=>" s"}
[17] pry(main)> parse("--format s")
OptionParser::InvalidOption: invalid option: --format s
为什么 --format s
不起作用?
最佳答案
当您调用 parse
时手动,需要传入ARGV
,不是脚本名后面所有的字符串,而是拆分后的数组:
./example.rb -f s # => ["-f", "s"]
./example.rb --format s # => ["--format", "s"]
./example.rb --format=s # => ["--format=s"]
因此,如果我们将这些格式传递给解析,我们就能正确解析选项:
op.parse(['-f', 'a']) # => {"format"=>"a"}
op.parse(['--format', 'b']) # => {"format"=>"b"}
op.parse(['--format=c']) # => {"format"=>"c"}
关于Ruby OptionParser 不解析 -- 命令正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51429156/