こんにちは!
今回は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