Ruby のブロック内で return すると…
Ruby のブロック内で return するとブロックを抜けるのではなくて、メソッドから抜けます。
[コード]
def sum n result = 0 n.times.each { |it| # ここで return を呼ぶとブロックを抜けるのではなくて # メソッドから抜ける return if it > 10 result += it } result end sum 5 # => 10 sum 10 # => 45 sum 20 # => nil
ブロックから抜けたいときにうっかり使いそうなので注意する必要がありそう。
ちなみにブロックから抜けるわけではないですが、ブロックの処理をスキップしたい場合は next
が使用できます。