Help us understand the problem. What is going on with this article?

Rubyのyieldとブロック

More than 1 year has passed since last update.

yieldについて

メソッドに渡されたブロックを実行します。

そもそもブロックって

ブロックとは { ~ } で囲まれた処理や、do ~ endで囲まれた処理のことを指すそうです。
余談ですが、callメソッドで自身の処理を呼び出せます。

proc_obj1 = Proc.new { |arg| p arg }
proc_obj2 = Proc.new do |arg|
  p arg
end
proc_obj1.call('hoge') # hoge
proc_obj2.call('hoge') # hoge 

yieldは引数で渡されたブロックを実行する

def yield_test
  yield( 10, 20 )
end

puts yield_test { |x, y| x + y } # 30
puts yield_test { |x, y| x * y } # 200

puts yield_test { |x, y| x + y } # 30の、{ |x, y| x + y }部分がブロックで、yield_testではそのブロックに(10,20)という引数をわたして実行しています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away