4.3.2 ブロック
配列 と 範囲 はいずれも、 ”ブロック” を伴うさまざまな メソッド に対して応答することができます。
ブロックは、Rubyの極めて強力な機能であり、かつわかりにくい機能でもあります....
>> (1..5).each { |i| puts 2 * i } ➡︎ (1..5)が範囲オブジェクト。 .eachがメソッド。 { |i| puts 2 * i }がブロック。
2
4
6
8
10
=> 1..5
上のコードでは、範囲オブジェクトである(1..5)に対してeachメソッドを呼び出しています。メソッドに渡されている**{ |i| puts 2 * i }**が、ブロックと呼ばれる部分です
|i|では変数名が縦棒「|」に囲まれていますが、
これはブロック変数に対して使うRubyの構文で、
ブロックを操作するときに使う変数を指定します。
この場合、範囲オブジェクトのeachメソッドは、iという1つのローカル変数を使ってブロックを操作できます。そして、範囲に含まれるそれぞれの値をこの変数に次々に代入してブロックを実行します。
ブロックであることを示すには波カッコ で囲みますが、次のようにdoとendで囲んで示すこともできます。
とりあえずここでストップ