gpt4 book ai didi

ruby - Ruby 的 OptionParser 是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:41 26 4
gpt4 key购买 nike

来自 http://ruby-doc.org/stdlib-2.1.5/libdoc/optparse/rdoc/OptionParser.html 的 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

主要问题:

  • opts 的内容到底是什么?它是新的 OptionParser 实例,还是传递给脚本的所有 /-\w//--\w+/ 外观的东西?作为推论,do 是否会阻塞循环?
  • parse! 做什么?为什么在整个 do block 中调用它?

还想知道:

  • OptionParser#banner 方法是什么?您会在什么情况下看到该文本?
  • 在那个例子中,您会在什么情况下看到传递给 OptionParser 的第三个参数,即对标志效果的简短描述?
  • 如果脚本以未知选项运行,您如何创建自定义错误消息?

最佳答案

  1. opts 只是 OptionParser 的新实例。提供给 .new 的 block 使用以下行运行:

    yield self if block_given?
  2. parse!parse 相同,但它是破坏性的,这意味着它将从 中删除使用过的开关>ARGV。它在整个 do ... end block 上被调用,因为返回的值是新的 OptionParser 实例。

  3. banner 获取摘要的标题,可通过opts.banner = "foo"

  4. 设置
  5. 显示帮助时显示说明(-h标志):

    Usage: example.rb [options]
    -v, --[no-]verbose Run verbosely
  6. 您可以挽救 OptionParser::InvalidOption 异常:

    parser = OptionParser.new ...

    begin
    parser.parse!
    rescue OptionParser::InvalidOption
    puts 'Invalid args!'
    end

关于ruby - Ruby 的 OptionParser 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27238536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com