当我从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
Run Code Online (Sandbox Code Playgroud)
并输入:ruby test.rb -v 100,它返回:
{:verbose=>true}
["100"]
Run Code Online (Sandbox Code Playgroud)
不应该是冗长的100,不是布尔值?
我不知道这个,有没有人有任何建议?
mu *_*ort 50
您已指定该-v选项没有参数:
opts.on("-v", ...
Run Code Online (Sandbox Code Playgroud)
如果你想让它参与争论,你必须这样说:
opts.on("-v n", "--verbose=n", ...
#-----------^
Run Code Online (Sandbox Code Playgroud)
如果你想强制n成一个整数,那么:
opts.on('-v n', '--verbose=n', OptionParser::DecimalInteger, ...
Run Code Online (Sandbox Code Playgroud)
您希望开始阅读make_switch文档(例如它),然后对示例进行反向工程.
不要因为困惑而感到难过,OptionParser文档并不是最好的事情.