5-2-3 timesメソッドの書式とブロック

timesメソッドの書式

timesメソッドは、数値型オブジェクトにRuby標準で提供されているメソッドで、数値の後にドット(.)を記述した後にtimesを記述します。

繰り返したい処理をdo〜endで囲みます。繰り返したい処理はif文と同様にインデントすることが推奨されます。

また、繰り返しの回数をdo〜endで囲まれた処理で使いたい場合は、doの後に半角スペースで|変数|とすることで利用できます。

ただし前ページ「5-2-2 timesメソッドを使ってみよう」で確認した通り、変数に入る実際の値は繰り返し回数-1の値であることに注意が必要です。

これは配列の数とインデックスの関係によく似ています。要素の数が3つの配列の場合、インデックスは0から始まり2で終わります。

timesメソッドの書式をまとめると以下の通りです。

数値.times do |変数|
  # 数値の回数分、処理を繰り返す
end

Rubyのブロック

timesメソッドのように、Rubyではしばしば処理をdo〜endという記述で囲みます。この囲まれた処理のまとまりのことをブロックと呼びます。

ブロックの処理は前ページ「5-2-2 timesメソッドを使ってみよう」で確認した通り、{〜}で置き換えることができます。

Rubyは改行の有無に関係なく、do〜endでも{〜}でもブロックとして認識します。

ただし、主なコーディング規約の慣習として、do〜endで囲まれたブロックの処理は改行してインデントし、{〜}で囲まれたブロックの処理は1行で記述します。

したがって、ブロックで実行したい処理が複数行にまたがる場合は、do〜endを使用します。

逆に、ブロックで実行したい処理が1行で記述できるほど短い場合は、{〜}を使用します。

# do〜endを使う場合
数値.times do |変数|
  # 処理が複数行にまたがるほど長い場合
end

# {〜}を使う場合
数値.times { |変数| # 処理が短い場合 }

{〜}を使う場合、一般的なコーディング規約では、{}の前後には半角スペースを入れることが推奨されています。

なお、プログラムとしては半角スペースなしでも動作はします。

timesメソッドの書式とブロックのまとめ

  • 指定した回数、繰り返し処理を実行するにはtimesメソッドを使う
  • do〜endで囲まれた部分をブロックと呼ぶ
  • do〜endのブロックは{〜}で書き換えることができる