tyoshikawa1106のブログ

- Force.com Developer Blog -

Rails:Railsコンソールで覚えるRubyのブロック

Railsチュートリアルの第四章ブロックについて勉強しました。


まず、サンプルコードを動かしてみた結果です。

f:id:tyoshikawa1106:20150718163042p:plain


上のコードは、範囲オブジェクトである(1..5)に対してeachメソッドを呼び出します。そのときに、{ |i| puts 2 * i }というブロックを渡します。|i|では変数名が縦棒に囲まれていますが、これはブロック変数に対して使用するRubyの構文で、ブロックを操作するときに使用する変数を指定します。この場合、範囲オブジェクトのeachメソッドは、iという1つのローカル変数を使用してブロックを操作できます。そして、範囲に含まれるそれぞれの値をこの変数に次々に代入してブロックを実行します。


括弧 {} の代わりにdoとendで囲んで示すこともできます。
f:id:tyoshikawa1106:20150718163338p:plain


ブロック内は複数の行を使用することが可能です。また、mapを利用して複雑な要件に対応することもできます。

f:id:tyoshikawa1106:20150718164148p:plain

上に示したように、map メソッドは、配列や範囲オブジェクトの各要素に対して、与えられたブロックを適用した結果を返します。


とりあえずブロックはdoとendで覚えておいたほうがいいのかなと思います。

>> (1..5).each do |number|
?>   puts 2 * number
>>   puts '--'
>> end