-1

このコードでは、コードによって提供されるインデックス値に従って配列を反復したいと思います。これは、1 回反復して ARGV[1] の出力を取得したい 2 回目の 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 に答える