当我从OptionParser文档运行this sample时:
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
options[:verbose] = v
end
end.parse!
p options
p ARGV
并输入:ruby test.rb -v 100
,它会返回:
{:verbose=>true}
["100"]
不应该是100
,而不是布尔值吗?
我对此一无所知,有没有人有任何建议?
答案 0 :(得分:50)
您已指定-v
选项没有参数:
opts.on("-v", ...
如果你想让它参与争论,你必须这样说:
opts.on("-v n", "--verbose=n", ...
#-----------^
如果你想强制n
为整数,那么:
opts.on('-v n', '--verbose=n', OptionParser::DecimalInteger, ...
您希望开始阅读make_switch
文档(例如它),然后对示例进行反向工程。
感到困惑不要感到困惑,OptionParser文档并不是最好的事情。