メソッドの途中で値を返すには return を使います。
def f return 1 2 end f # => 1
では、ブロックの途中で値を返すにはどうするのか?
# [5, 5, 5] にしたい # map 派 [1, 2, 3].map{ |e| ???? 5; e}
こういうときは next に引数を渡すのだというのを、今日初めて知りました。
irb(main):008:0> [1, 2, 3].map{ |e| next 5; e } => [5, 5, 5]
ブロックの途中で yield の呼び出し元に値を返したいと思った経験があまりなかったので、 このようなケースを考えたことがありませんでした。 ちょっとショック。