ruby数组each_with_index

时间:2012-09-21 08:48:36

标签: ruby arrays iteration command-line-arguments

在这段代码中,我想根据代码提供的索引值迭代我的数组,就像我想要迭代一次并获得ARGV [1]第二次ARGV [3]的输出。

假设

ARGV = ["-f","abc","-x","-p","wer"]

#!/usr/bin/env ruby

@lenght = ARGV.length
@factory_config_xml = ""
@num = 0

if @lenght != 0
    ARGV.each_with_index do |a , x|

        @num = @num + 1
        b = ARGV[@num]

        if ((a == "-f") && !(b.match "-") )

            @factory_config_xml = b
            x += 1
            @num = @num + 1

        elsif ((a == "-x") && !(b.match "-") )

            @factory_config_xml = b
            x += 1
            @num = @num + 1

        elsif ((a == "-p") && !(b.match "-") )

            @factory_config_xml = b
            x += 1
            @num = @num + 1
        end

    end
end


puts @factory_config_xml 

1 个答案:

答案 0 :(得分:2)

为什么不使用选项解析器库来解析程序参数,而不是再次重新发明轮子。

例如,使用OptionParser,您的生活会更容易。

在这个特殊问题中,将x变量递增1会对您没有帮助,因为在下一次迭代中each_with_index将再次传递下一个整数。所以,你应该创建自己的循环:

i = 0
while (i < ARGV.length) do
  # do your stuff with the incrementing but take care to increment in each loop
end 
相关问题