loop と while true の違い

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

以前、loopメソッドというエントリーで、loopはwhile trueと同義だと書いていたのですが、厳密には間違いでした。
繰り返しという目的においては類似しているが、変数のスコープが違います。
ご指摘を頂き気付いたのですが、loopはメソッドであり、ブロックに変数のスコープが閉じ込められる。
一方、while true と書いた場合、これは制御文になるので、こちらはwhile文を抜けた後でも、変数が有効になる。
コメントでサンプル文も頂いたので、codepadでそのまま実行してみました。

スポンサーリンク

loopメソッド

loop do
  var = "test"
  puts var
  break
end
puts var

実行結果。

Line 6: undefined local variable or method `var' for main:Object (NameError)
test

loopメソッドの場合、6行目でエラーが出ており、loopメソッドを抜け出た後は、varっていう変数は定義されていないよ、と注意されています。

while true 文

while true
  var = "test"
  puts var
  break
end
puts var

実行結果。

test
test

while true のほうは、繰り返しを抜け出た後でも、変数varが出力されている。

スポンサーリンク
 
スポンサーリンク