OptionParser返回bool而不是参数?
当我从OptionParser文档中运行此示例时 :
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
,而不是布尔值?
我不知道这个,有没有人有任何建议?
您已指定-v
选项没有参数:
opts.on("-v", ...
如果你想让它参与争论,你必须这样说:
opts.on("-vn", "--verbose=n", ... #-----------^
如果你想强制n
是一个整数,那么:
opts.on('-v n', '--verbose=n', OptionParser::DecimalInteger, ...
您想要开始阅读make_switch
文档(例如它),然后对这些示例进行反向工程。
不要因为困惑而感到难过,OptionParser文档并不是最好的事情。