首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用OptionParser抑制短参数

用OptionParser抑制短参数
EN

Stack Overflow用户
提问于 2013-10-08 08:23:18
回答 1查看 791关注 0票数 0

我有一个Ruby应用程序,具有相对广泛的命令行参数集。我想抑制一些选项的“短”变体,以便它们只能在长(“双破折号”)形式中使用。

我能以某种方式抑制一些选项的短距离变体吗?

更新2013/10/08

事实证明,省略短变体确实有效!然而,对我来说,这并不是因为在我的程序中,所有的短键都是以空格作为前缀的。所以这样一个简单的例子:

代码语言:javascript
复制
require 'optparse'

op = OptionParser.new
op.on(" -f", "--from FORMAT", "Use the specific format") {}
op.on("--flip", "Do a flip") {}
op.parse!

引起了例外情况:

代码语言:javascript
复制
ruby why.rb -f some-foos
why.rb:17:in `<main>': ambiguous option: -f (OptionParser::AmbiguousOption

而所提供的建议(请注意开场白后的篇幅不足):

代码语言:javascript
复制
require 'optparse'

OptionParser.new do |opts|
  opts.on("-d", "--ding DING", "Should not conflict with dangerous-option") do
    puts "ding set!"
  end
  opts.on("--dangerous-option", "Set dangerous option") do |v|
    puts "dangerous option set to #{v}"
  end
end.parse!

效果很好。

代码语言:javascript
复制
$ruby dang.rb -d xyz
ding set!

因此,感谢p11y通过一个工作示例为我指明了正确的方向。此外,如果这个“领先空间”已经到位,optparse就不会抱怨--但它会改变对短键的解释(或者更好地说,它会忽略它们,并显示它们作为帮助线的一部分!--并且仍然使用自动生成的键)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 08:32:39

只需去掉简短的表格:

代码语言:javascript
复制
require 'optparse'

OptionParser.new do |opts|
  opts.on("--dangerous-option", "Set dangerous option") do |v|
    puts "dangerous option set to #{v}"
  end
end.parse!
代码语言:javascript
复制
$ ruby foo.rb -h
Usage: foo [options]
        --dangerous-option           Set dangerous option

$ ruby foo.rb --dangerous-option
dangerous option set to true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19242638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档