LoginSignup
1
1

More than 5 years have passed since last update.

rubyのyield使うときの書き方の組み合わせ

Last updated at Posted at 2017-04-13

rubyでyield、lambda(proc)を使うとき、書き方の組み合わせがいろいろあってこんがらがるので思いつく範囲でまとめてみました。

渡したブロックをdef内のyieldで呼び出すパターン

huga.rb
def huga(arg)
  yield(arg)
end
func = lambda{|arg| p arg}
huga("hoge",&func)         #=> hoge
huga("hoge"){|arg| p arg}  #=> hoge

渡したブロックを&引数で受け取ってcallで呼び出すパターン

hoge.rb
def hoge(arg,&b)
  b.call(arg)
end
hoge("hoge"){|arg| p arg}  #=> hoge

事前にProc オブジェクトを作っておいて、それを渡すパターン

boo.rb
def boo(arg,b)
  b.call(arg)
end
func = lambda{|arg| p arg}
boo("hoge",func)                    #=> hoge
boo("hoge",lambda{|arg| p arg})     #=> hoge
1
1
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1