whileと loopの動作の違いを実感した

こんにちは!

今回はwhile trueとloop doの動作の違いを実感したことについてまとめます。

whileの場合

count = 0
while true
  count += 1
  text = 'aaa'
  break if count > 2
end
puts text

結果

'aaa'

loopの場合

count = 0
loop do
  count += 1
  text = 'aaa'
  break if count > 2
end

puts text

結果

undefined local variable or method 'text' ...

理由

  • loopで渡しているのは do .. end のブロックであり、ブロックの内部で宣言した変数はブロック外からは参照できない(スコープ外)
  • whileで渡しているのはブロックではなく、whileの内部で宣言した変数はwhileの外からでも参照できる

おわりに

Rubyの文法の本にも書いていたと思いますが、この動作の違いが関係する事象に実際に遭遇すると理解が深まりますね。

9/100