ブロックをオプションで取るメソッドを定義する
メソッドが呼び出された時にブロックが渡されたかどうかはblock_given?
で判定することができる。これを使えばブロックが渡された場合、渡されなかった場合、両方に対応したメソッドを定義することができる。
def method() if block_given? # ブロックあり else # ブロックなし end end
ブロック引数を使ってブロックをProc
オブジェクトで受け取るメソッドの場合、ブロックが渡されなかった時、ブロック引数はnil
となる。以下でも同様にブロックが渡された場合、渡されなかった場合の両方にメソッドを対応させることができる。
def method(&blk) if blk # ブロックあり else # ブロックなし end end