まめ畑

ゆるゆると書いていきます

無限ループ内でループ回数を数えるメモ

Rubyで無限ループを回した時にループ回数を取得したい時用のメモ。


今までは

count = 0
loop do
   #なんか処理
   break if count == 100
   count += 1
end

と変数を用意してたけど

こう書ける事を知った。

0.upto(0/(0.0)) do |count|
   #なんか処理
   break if count == 100
end

0/(0.0)でINFINITYになるので無限ループになります。
しかし、0.0ではなく0で割ると「ZeroDivisionError: divided by 0」になってしまいます。

0.0で割れるとは知らなかった。

  • 追記

Rubyでの無限ループのカウント - はてなかよっ!でloopとuptoでベンチ結果が掲載されています。
loopの方が速いですね。
しかし、Ver1.9だとループ回ってないようです。
ソースを後ほど見てみたいと思います。