Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby OptionParser:2个选项,1个参数_Ruby_Parameters_Optionparser - Fatal编程技术网

Ruby OptionParser:2个选项,1个参数

Ruby OptionParser:2个选项,1个参数,ruby,parameters,optionparser,Ruby,Parameters,Optionparser,我试图使用OptionParser读取多个选项,并使它们都作用于单个文件名Ex:myprogram.rb-a-b file.txt如何使两个选项共享一个强制参数,同时也允许像-h这样的东西在没有参数的情况下运行?目前,上面的行只是将-a作为其参数 optionparser.on("-a FILENAME", "Do this") do |a| puts a end optionparser.on("-b FILENAME", "Do that") do |b| puts b end 编

我试图使用OptionParser读取多个选项,并使它们都作用于单个文件名
Ex:myprogram.rb-a-b file.txt
如何使两个选项共享一个强制参数,同时也允许像
-h
这样的东西在没有参数的情况下运行?目前,上面的行只是将
-a
作为其参数

optionparser.on("-a FILENAME", "Do this") do |a|
  puts a
end
optionparser.on("-b FILENAME", "Do that") do |b|
  puts b
end
编辑:

它正在做什么:

myprogram.rb -a -b file.txt
=> -b
我需要它做什么:

myprogram.rb -a -b file.txt
=> file.txt
=> file.txt
注意:


这些命令应该能够独立运行,并且与
ls-a..
ls-l..
ls-a-l..
类似,但如果没有给出文件名,则两个命令都不应工作。理想情况下,此解决方案可以与任意n个选项一起使用。

我现在拥有的是:

alpha=false
beta=false
optionparser.on("-a", "Do this") do |a|
  alpha = a
end
optionparser.on("-b", "Do that") do |b|
  beta = b
end
if alpha
  #do something with ARGV[0]
end
if beta
  #do something with ARGV[0]
end
这段代码假设在选择这些选项之后,命令行上只剩下文件名。我觉得有一种更优雅的方法可以做到这一点,它考虑到命令行中可能会出现的其他问题,并允许对它们进行错误更正。

Docs reference