Ruby には loop というものがあり、 while true とどう違うのか今イチ分かりませんでした。
メーリングリストでまつもとさんが答えていました。 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/20222
制御構造であるwhileとイテレータであるloopの間の本質的な違いはloopの方はループ本体がブロックである点です。そしてブロックは新たなスコープを導入します。
loop がイテレータとは。
loop do hoge = "hoge" break end puts defined?(hoge) while true hoge = "hoge" break end puts defined?(hoge)
実行結果
nil local-variable
用途によって使い分ける必要がありますが、 loop のほうが直感的で 分かりやすいと感じました。
まず ri loop で調べればよかったです。 Kernel モジュールで宣言されている単なるメソッドでした。