IT技術にまつわる実験ノート

「長編を書くより、短編を数多く完成させてください。それが上達への近道です」 by 手塚治虫

Ruby で &block を使ってみる

はじめに

ここでは以下の記事を参考にして、Ruby で &block を使ってみることにする。

 

使ってみる

引数にブロックをとるメソッドを定義する。

メソッドを定義する時に &block を使うことで、このメソッドが引数でブロックを受け取ることを明示的にすることができる。あとはメソッド内で block.call を実行して、受け取ったブロックを処理することができる。

f:id:matt-note:20190504115050p:plain

 

引数にブロックをとるメソッドに、ブロックを渡さずに呼び出してみる。

f:id:matt-note:20190504120045p:plain

-> 引数のブロックがないので、関数の中の block が nil になる。nil に call メソッドがないので、エラーになった。

 

メソッド実行時に、ブロックを丸括弧に囲んで実行してみる。

f:id:matt-note:20190504120713p:plain

-> エラーになる。ブロックを引数に取るメソッドの実行は、丸括弧をつけずに hoge { p "piyo" } のようにブロックを渡す必要がある。

 

引数に、空のブロックを渡してみる。

f:id:matt-note:20190504121302p:plain

-> block.call が実行されて、実行結果は nil になる。

 

まとめ

&block を使うことで、メソッドがブロックを引数にとることを明示することができる。