このエラーは何?
- 引数で求めている数が本来は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)を代入すべし