53819


Rubyでプログラミングしています．  
表題の通り，以下の`each`文のループ回数`num`を，`each`スコープ内で増やすことができますでしょうか．

ご教授宜しくお願いします．  
以下，サンプルプログラムです．

[code]

    num = 10
    NumList = []
    (0 ... num).each do |i|    
    
        if i == 5   # このifに入ったら大ループ数numを+1する
            NumList[-1] = 99
            #num += 1
        else
            NumList << i        
        end
    
    end
    
    p "NumList = #{NumList}"
    
[/code]

現出力 ："NumList = [0, 1, 2, 3, 99, 6, 7, 8, 9]"  
期待出力："NumList = [0, 1, 2, 3, 99, 6, 7, 8, 9, 10]"


CC BY-SA 4.0
2019-03-29T11:06:49.727
53802
2019-03-30T04:30:54.333
30173
question
ruby
ループの途中でループ数を増やす方法はあるか


`Range.enum`だけでは無理なので、追加分を配列として連結すればどうでしょうか。

[code]

    range = (0...num)
    additional = []
    [range, additional].lazy.flat_map{|enum| enum.lazy}.each do |i|
        if i == 5
            NumList[-1] = 99
            additional << 10
        else
            NumList << i
        end
    end
    
[/code]


CC BY-SA 4.0
2019-03-29T11:53:16.120
53803
2019-03-29T11:53:16.120
9464
53802
answer


普通に`while`で書いたらいいのではないでしょうか。

[code]

    num = 10
    NumList = []
    i = 0
    while i < num
      if i == 5 # このifに入ったら大ループ数numを+1する
        NumList[-1] = 99
        num += 1
      else
        NumList << i
      end
      i += 1
    end
    
    p "NumList = #{NumList}"
    
[/code]


CC BY-SA 4.0
2019-03-30T04:30:54.333
53819
2019-03-30T04:30:54.333
9608
53802
answer