首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ARGV解析参数的正确方法

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

Stack Overflow用户
提问于 2016-05-11 12:56:47
回答 1查看 755关注 0票数 0

我编写了一个使用ARGV作为参数的程序,因为我无法安装外部gems。

我现在要做的是:

代码语言:javascript
复制
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中是“首选”吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-11 13:00:10

对于可能比较复杂的参数列表,OptionParser可能是正确的选择。

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

代码语言:javascript
复制
puts case ARGV[0]
     when '-h' then "Help page"
     when '--example' then "Examples page"
     ...
     end

这里有一个被考虑到的干原理:一个puts,因为每个分支都做putsARGV[0]只提到过一次等等。

在遍历参数数组时,Array#shift是有意义的,除非它是空的,因为它从数组中删除了元素。在伪代码中,看起来可能如下所示:

代码语言:javascript
复制
 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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37163390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档