[Ruby] yield を理解するためのスニペット

noteでのアウトプットの試み。

Ruby における yield がよくわからなかった時に書いた過去記事↓のダイジェスト。

Ruby の yield って結局なんなの? - YNote
http://d.hatena.ne.jp/yoshidaa/20090511/1241967137

下記のメソッド hogehoge と foofoo は同じはたらきをする。

def hogehoge( x, &proc )      # &proc
  proc.call if block_given?   # proc.call
  return x + 2
end

def foofoo( x )               # &proc はない!
  yield if block_given?       # proc.call が yield に!
  return x + 2
end

p hogehoge( 3 )
# => 5
p hogehoge( 5 ){ p "foo" }
# => "foo"
#    7
p foofoo( 3 )
# => 5
p foofoo( 5 ){ p "foo" }
# => "foo"
#    7


いいなと思ったら応援しよう!