わざわざクラスを作るまでもない。そして、breakは値返せるのだ

forループ - もりもりマッチョのmemo

「numの2乗を求めていき、1000を超えたら出力する」問題。

いくらRubyオブジェクト指向スクリプト言語であっても、必ずしもクラスを作らないといけないことはない。

breakに引数をつけたら、それがループやブロック付きメソッドの返り値になるのはあまり知られていないと思う。俺も初めて使った。

p 100.times {|num|
  square = num * num
  break [num, square] if square > 1000
}
# >> [32, 1024]

100.timesが気持ち悪いから、Stream(無限リスト)が欲しくなった。SICPでやったなぁ。