在Ruby中,OptionParser返回布尔值而不是输入值

时间:2016-04-28 09:04:38

标签: ruby arguments optparse

我正在尝试使用OptionParser获取参数值。 我的代码只返回boolean:

而不是值
require 'optparse'

options ={}
opts = OptionParser.new do |opts|
opts.on('-v')    { |version| options[:version] = version }
opts.on('-g')    { |branch| options[:branch] = branch }
opts.on('-f')    { |full| options[:full] = full }
opts.on('-h')    { RDoc::usage }
end.parse!

# mandatory options
if (options[:version] == nil)  or (options[:branch] == nil) or (options[:full]== nil) then
    puts options[:branch]
    puts options[:version]
    puts options[:full]
    RDoc::usage('usage')
end

puts options[:branch]

---> TRUE

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

如果您想捕获一个值,您需要提出它:

opts = OptionParser.new do |opts|
opts.on('-v=s') { |version| options[:version] = version }
opts.on('-g=s') { |branch| options[:branch] = branch }
opts.on('-f=s') { |full| options[:full] = full }
opts.on('-h') { RDoc::usage }

=s符号表示存在关联值。

在定义此类界面时,请不要忘记包含长格式名称(如--version--branch所示),以便人们不必记住g表示"分支"

所有这些都包含在fantastic documentation中,我建议您阅读。