在这段代码中,我想根据代码提供的索引值迭代我的数组,就像我想要迭代一次并获得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
答案 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