Ruby ブロック

ブロックは、メソッドの引数の一つで

通常の引数よりも理解が難しい。

 

メソッド名 do |ブロック引数|

 処理

end

 

上記の記述によりメソッドの引数が定義されており、メソッドが呼び出される際に、引数として受け継いでいることになる。

この引数の処理を通常のメソッド内で行うには、定義文内でyieldを用いる。

 

def メソッド名

 yield

end

 

先ほども記述した以下の宣言は、メソッドの実行の宣言であり、実行の際に渡される変数がブロックである。

 

メソッド名 do |ブロック引数|

 処理

end

 

また、以下のように、引数に&をつけてメソッドに渡すことでブロック引数

の存在を明示する事ができる。callメソッドを付与することでブロック引数内の処理を実行する事ができる。

 

def メソッド名(&block)

 block.call

end