Rubyのブロックを学ぶ
ブロックはプログラムのかたまり
メソッドにブロックを渡すことができる
ブロックが渡されたどうかをif文で判断するなどして、処理を切り替えることができる
メソッドの中で、yieldを使って、渡されたブロックを実行できる ブロックをProcオブジェクトとして渡すこともできる 変数の先頭に&をつけて (Procオブジェクトを生成して) 渡す
&をつける以外にも、Procオブジェクトを生成する方法がいくつかある
lambdaの省略記法はラムダリテラルや、アロー演算子とも呼ばれる
lambdaを使った場合は、Proc.newやprocと違って、ブロック引数の数とブロックに渡す引数の数が一致していないとエラーになるなどの厳密さがある
Procオブジェクトを渡されたメソッドの中で、Proc#callを使ってブロックを実行できる 引数で渡されたブロックを格納する変数がnilかどうか (変数.nil?) で、ブロックが渡されたかを判別できる
オブジェクトとして受け取ることで、受け取ったブロックをさらに別のメソッドに渡すことができる
関連URL