-1

在这段代码中,我想根据代码提供的索引值来迭代我的数组,比如一次我想迭代并获得 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 
4

1 回答 1

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 
于 2012-09-21T08:50:51.370 回答