🖥

#Ruby の begin end while で 変数代入なしでループ処理する ( 後方 while )

2019/10/24に公開

  • a に 10が代入されるまでランダムな値を代入し続ける例。
  • 何回も処理を繰り返して a == 10 になったタイミングでループを抜ける。
  • while は必ず1回は実行されて a 変数が定義される。コード的には後方にあるけど最初に評価される。後方 if とかと同じノリかな。
  • begin rescue での例外キャッチの処理とは全く関係ない。たぶん。キーワードは似ているけれど。
i = 0

begin
  a = rand(99)
  i += 1
end while a != 10

a # 10
i # => 156

どういうこと?

  • これとだいたい同じ。
a = nil

while a != 10
  a = rand(99)
end

p a #10

whileだけじゃ無理なの?

  • a を定義していないと未定義エラーが起こる。
  • 最初に a = nil とか定義しておくのと同じ。
while a != 10
  a = rand(99)
end

# NameError: undefined local variable or method `a' for main:Object

while とは違い、必ず一回は実行されるっぽい

begin
  puts :a
end while false

# a

begin rescue end とは違うの?

例外をキャッチしたいわけではないらしい。そもそも rescue って書いてないし。

begin
  raise
end while true

# RuntimeError:

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2625

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-10-24

Discussion