LoginSignup
2
1

More than 1 year has passed since last update.

ArgumentError: wrong number of arguments (given x, expected y)

Posted at

このエラーは何?

  • 引数で求めている数が本来はy個なのに、x個与えられているよ
  • 引数で必須の引数の数を入れてね。

サンプル

以下のようなコードに対して、


def add(a, b, c)
   a + b + c
end

引数が足りないものを呼ぶとエラーになる。


add(1,2)

# => ArgumentError: wrong number of arguments (given 2, expected 3)

今回ハマった問題

  • メソッドの呼び出し位置によって、引数の数が変わる処理をした際
def add (a, b, c)
   a + b + c
end

add(1, 2, 3) => 6 で出力される
add(1, 2) => 3で出力させたいけど、cがないのでArgumentErrorが起こる

  • こういう場合は、cが存在しなければ0になるように代入してあげればよい。
def add (a=0, b=0, c=0)
   a + b + c
end

add(1,2) => 3 
add(1,2,3) => 6

  • 引数の持ち方としてオプショナル引数にすれば、パラメーターの有無を考慮してデフォルト値を入れてくれるので、必須パラメーターの数は整合し、ArgumentErrorが起こらない

  • パラメーターが必ず入力されるものではない場合、必須引数(Required Parameter)ではなくオプショナル引数(Optional Parameter)を代入すべし

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1