Code Fix

上級可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる › パターン4

可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる

受け取った可変長引数(*argsで受けた配列)をそのまま別のメソッドに渡すには、呼び出し側でも*を付けて展開する必要があります。

 1  def merge_nums(a, b, c)
 2    a + b + c
 3  end
 4  
 5  def wrapper(*args)
 6    merge_nums_______
                   ^
 7  end
 8  
 9  puts wrapper(10, 20, 30)
main.rb:1:in `merge_nums': wrong number of arguments (given 1, expected 3) (ArgumentError) from main.rb:6:in `wrapper' from main.rb:9:in `<main>'

空欄を埋めて実行を通す

広告
広告スロット(未設定)

可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる

*を付けずに渡すと、配列がまるごと1個の引数として渡ってしまい、引数の数が合わずArgumentErrorになります。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)