【Ruby3.x】Range::%()メソッドの使い方
%メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
%メソッドは、Rangeオブジェクトの要素を繰り返し利用し、指定されたインデックスに対応する要素を返すメソッドです。このメソッドは、与えられたRangeの要素が仮想的に無限に繰り返されているかのように振る舞い、引数に指定された整数(インデックス)に基づいて、その繰り返しシーケンス内の特定の要素を算出します。
使用例としては、range % index の形式で利用します。ここでrangeはRangeオブジェクト、indexは取得したい要素の位置を示す整数です。例えば、1..3というRangeがある場合、1..3 % 0は1、1..3 % 1は2、1..3 % 2は3を返します。Rangeのサイズを超えるインデックスが指定されてもエラーにならず、要素が繰り返しの中から選ばれます。例えば、1..3 % 3は1、1..3 % 4は2を返します。これは、Rangeの要素が1, 2, 3, 1, 2, 3, ...と繰り返されると見なされるためです。
内部的には、range.to_a[index % range.size] と同様のロジックで動作します。Rangeを配列に変換し、その配列のサイズでインデックスを割った余りの位置にある要素を取り出すことで、繰り返しを表現しています。このメソッドは、限定された要素の集合を周期的に利用したい場合や、範囲外のインデックスに対しても安全に要素を取り出したい場合に非常に役立ちます。
構文(syntax)
1(1..10) % 2 .to_a
引数(parameters)
引数なし
引数はありません
戻り値(return)
Object
Rangeオブジェクトの要素を、指定されたフォーマット文字列を用いて整形した文字列を返します。