この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
ご無沙汰してます。トマトです。
自分自身もよくわからなかった、ruby の yield について
理解がてら説明してみます。
yield とは?
一言で行ってしまうと、 ブロックに処理を引き渡してくれる役割をもっています。
文字で書くと非常にわかりづらいので、
実際に動作を見てみましょう。。。
def test
puts "#################"
puts "yield実行前"
puts "#################"
yield(1,2)
puts "#################"
puts "yield実行後"
puts "#################"
end
test do |x,y|
my_sum = x+y
puts "#{x}+#{y}=#{my_sum}"
end
こんな感じのコードを書いたとすると、 実行結果は下記の通りになります。
#################
yield実行前
#################
1+2=3
#################
yield実行後
#################
実行結果を見る通り、yield を記述した箇所で
ブロックに処理を引き渡して実行しているのがわかります。
上記はすごく単純な例になりますが、少しでも理解の助けになればと思います。