【Ruby】エラーメッセージ「 wrong number of arguments (given x, expected y)」が表示されたときの原因と解決策をお伝えします

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、10年目エンジニアです。

この記事では、 Rubyを実行したときに出力されるエラーのwrong number of arguments (given x, expected y)について

  • エラーの意味と原因
  • エラーのサンプルプログラム
  • エラーの解決策

と、この記事で丁寧に解説していきます。

前提条件

この記事で使っているRubyのバージョンは、2.6.6です。

Rubyのインストールは、下の記事をご参考ください。

wrong number of arguments (given x, expected y)の意味と原因

wrong number of arguments (given x, expected y)の意味は、メソッドの引数が異なる、という意味です。
つまり、呼び出したいメソッドに与えるべき引数が少ない、または多い状態に出力されるエラーです。

givenとexpectedの数字は以下の意味があります。

↑は、メソッドに与えられた引数は1つだった(given)が、本来ならば引数は何もないことが正しい(expected)、という意味です。

次章では、実際にエラーが出力されるサンプルプログラムで解説していきます。

エラーを出力させるプログラムの概要

宣言しているメソッドの引数より1つ多く引数を与えて、その結果を確認するプログラムです。

エラーになるサンプルプログラム

実行結果

Rubyプログラムを実行するやり方は、以下の記事をご参考ください。

Traceback (most recent call last):
1: from wrongnumbersample.rb:10:in <main>'
wrongnumbersample.rb:3:in
wrongarg’: wrong number of arguments (given 1, expected 0) (ArgumentError)

3行目のwrongargメソッドでエラーが起き、想定通り与えている引数が1つ多い、とエラーが表示されました。

エラーの解決策

エラーの解決策は

  1. 解決策1:呼び出している側で、与える引数を調整する
  2. 解決策2:宣言している側で、メソッドの引数を調整する

の2パターンあります。
それぞれのパターンで、先ほど使ったサンプルプログラムを修正していきます。

解決策1:呼び出している側で、与える引数を調整する

解決策1の修正サンプルは以下になります。

wrongargメソッドを呼び出すときの引数を変更しました。
これでエラーとならず、以下のように出力されます。

解決策2:宣言している側で、メソッドの引数を調整する

解決策2の修正サンプルは以下になります。

wrongargメソッドの引数を変更しました。
これでエラーとならず、以下のように出力されます。

まとめ:エラーメッセージ「 wrong number of arguments (given x, expected y)」が表示されたときはメソッドの引数を確認しよう!

以上がエラーメッセージ「 wrong number of arguments (given x, expected y)」についての解説でした!

もしこのエラーが表示されたときは、メソッドの引数に着目して修正してみてください!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

タイトルとURLをコピーしました