プロを目指す人のためのRuby入門 その19
第10章 yield と Proc を理解する
今回から新しい章です。
yield
引数として受け取ったブロックを呼び出すために yield が使われます。
def greeting puts 'おはよう' # ブロックの有無を確認してから yield を呼び出す if block_given? yield end puts 'こんばんは' end greeting greeting do puts 'こんにちは' end
call メソッドを使ってブロックを実行することができます。
def greeting(&block) puts 'おはよう' # call メソッド使ってブロックを実行する text = block.call('こんにちは') puts text puts 'こんばんは' end greeting do |text| text * 2 end
Proc
ブロックをオブジェト化するために Proc クラスを使います。
hello_proc = Proc.new { puts 'Hello' } hello_proc.call
proc と lambda の違いは、lambda は引数が過不足なく渡される必要があるということです。
本
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る