【Ruby3.x】Integer::modulo()メソッドの使い方
moduloメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
moduloメソッドは、Rubyの組み込みクラスであるIntegerクラスに属するメソッドで、整数を別の整数で割ったときの剰余(余り)を計算し、その結果を取得するメソッドです。
このメソッドの最大の特徴は、計算結果として返される剰余(余り)の符号が、除数(割る数)の符号と常に一致するという点です。これは、プログラミングにおいて剰余を求める際に一般的に使われる % 演算子や remainder メソッドが、それぞれ被除数(割られる数)の符号と一致する結果や0に近い結果を返すのとは異なる挙動を示します。
具体的な例を挙げると、7.modulo(3) は 1 を返します。一方、(-7).modulo(3) の場合、除数である 3 が正の数のため、結果は 2 となります((-7) = 3 × (-3) + 2)。また、7.modulo(-3) では、除数である -3 が負の数のため、結果は -2 となります(7 = (-3) × (-3) - 2)。さらに、(-7).modulo(-3) の場合は、除数が負の -3 なので、結果は -1 となります((-7) = (-3) × 2 - 1)。
このように、modulo メソッドは剰余の符号を厳密に制御したい場合に非常に有用です。ただし、除数に 0 を指定した場合は ZeroDivisionError が発生しますので注意が必要です。システム開発において、日付計算の周期処理や配列のインデックスを循環させる際など、剰余の符号が計算結果に影響を与える場面で活用されます。
構文(syntax)
110.modulo(3)
引数(parameters)
req
- other: Integer: 割られる数(被除数)を指定する整数
戻り値(return)
Integer
Integerクラスのmoduloメソッドは、レシーバー(メソッドを呼び出した整数)を引数(整数)で割ったときの余りを整数で返します。