
[code]

    while false
      puts 1
    end
    
[/code]

このような条件でも1回は必ず実行するwhileはrubyでは用意されていないでしょうか


CC BY-SA 3.0
2017-11-07T09:31:46.233
39373
2017-11-08T04:55:53.843
24522
question
ruby-on-rails ruby
rubyで1回目は必ず実行するwhile

[code]

    begin
      puts 1
    end while false
    
[/code]

でどうでしょうか。


CC BY-SA 3.0
2017-11-07T10:39:02.623
39378
2017-11-07T10:39:02.623
3249
39373
answer


既出ですがbegin節とwhile修飾子(後置while)を組み合わせるとできます。

[code]

    begin
      puts 1
    end while false
    
[/code]

が。[Ruby Style Guideではこの記法は推奨されていません](https://github.com/bbatsov/ruby-style-
guide/blob/master/README.md#loop-with-break)。かわりに`loop/break`の組み合わせを使ってください。

[code]

    loop do
      puts 1
      break unless false
    end
    
[/code]

while修飾子はbegin節と組み合わせるか否かで動作が異なりますので、誤解によるバグの種となります。

[code]

    puts 1 while false #何もしない
    
    begin; puts 1; end while false #puts 1が呼ばれる
    
[/code]


CC BY-SA 3.0
2017-11-08T04:55:53.843
39405
2017-11-08T04:55:53.843
5793
39373
answer