我编写了一个使用ARGV作为参数的程序,因为我无法安装外部gems。
我现在要做的是:
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这在我看来并不是惯用的。所以我的问题是,有没有一种正确的方法来解析Ruby脚本中的ARGV参数?我做了一些研究,并看到人们使用ARGV.shift之类的,这在Ruby中是“首选”吗?
发布于 2016-05-11 13:00:10
对于可能比较复杂的参数列表,OptionParser可能是正确的选择。
关于您的代码,我会这样重写:
puts case ARGV[0]
when '-h' then "Help page"
when '--example' then "Examples page"
...
end这里有一个被考虑到的干原理:一个puts,因为每个分支都做puts,ARGV[0]只提到过一次等等。
在遍历参数数组时,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
endhttps://stackoverflow.com/questions/37163390
复制相似问题