如何将getoptlong与变量选项一起使用?

| 我有几个Nagios脚本,它们继承了一个常见的NagiosCheck类。由于每个检查的getopts选项都略有不同,因此我认为最好是通过NagiosCheck类方法生成可用选项。但是我被困住了... 这就是我所说的方法:
class CheckFoobar < NagiosCheck
  ...
end

check = CheckFoobar.new
check.generate_options(
  [\'-H\', \'--hostname\', GetoptLong::REQUIRED_ARGUMENT],
  [\'-P\', \'--port\', GetoptLong::REQUIRED_ARGUMENT],
  [\'-u\', \'--url\', GetoptLong::REQUIRED_ARGUMENT])
方法本身:
class NagiosCheck
  ...
  def generate_options (*args)
    options = []

    args.each do |arg|
      options << arg
    end

    parser = GetoptLong.new
    options.each {|arg| parser.set_options(arg)}
  end
end
然后解析器仅存储最后一项:
p parser # => #<GetoptLong:0x00000000e17dc8 @ordering=1, @canonical_names={\"-u\"=>\"-u\", \"--url\"=>\"-u\"}, @argument_flags={\"-u\"=>1, \"--url\"=>1}, @quiet=false, @status=0, @error=nil, @error_message=nil, @rest_singles=\"\", @non_option_arguments=[]>
您对我有什么建议,如何使解析器存储所有参数? 问候, 麦克风 ...关于stackoverflow的第一个问题。如果我做错了任何事情,请多包涵,并让我知道,以便我能够适应。     
已邀请:
generate_options方法太复杂。 Getoptlong.new将数组数组作为参数。
class NagiosCheck
  def generate_options (*args)
     GetoptLong.new(*args)
  end
end
    

要回复问题请先登录注册