使用ARGV解析参数的正确方法

时间:2016-05-11 12:56:48

标签: ruby argv

由于我无法安装外部宝石,我编写了一个使用[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationPortrait; 作为参数的程序。

到目前为止我所做的是:

ARGV

这对我来说似乎并不惯用。所以我的问题是,是否有正确的方法来解析Ruby脚本中的if ARGV[0] == '-h' puts "Help page" elsif ARGV[0] == '--example' puts "Examples page" elsif ARGV[0] == '-t' puts "Gathering intel" elsif ARGV[0] == '--version' puts "Version mode" elsif ARGV[0] == '--dev-mode' puts "developer mode" else puts "Help page" end 参数?我已经做了一些研究,并看到人们使用ARGV等等,这是Ruby世界中的“首选”吗?

1 个答案:

答案 0 :(得分:5)

OptionParser可能是可能复杂的参数列表的正确选择。

关于你的代码,我会这样重写:

puts case ARGV[0]
     when '-h' then "Help page"
     when '--example' then "Examples page"
     ...
     end

以下是一项干预原则:一个puts,因为每个分支只有putsARGV[0]只提到一次等。

在循环遍历arguments数组时,

Array#shift是有意义的,除非它是空的,因为它从数组中删除了元素。在伪代码中可能看起来像:

 while opt = ARGV.shift do
   puts case opt
        when '-h' then 'Help requested'
        when '-f'
          file = ARGV.shift # requires subsequent arg
          # possible check for value is valid
          do_smth_with_file file
        ...
        end
 end