上級 › 可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる › パターン1
可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる
受け取った可変長引数(*argsで受けた配列)をそのまま別のメソッドに渡すには、呼び出し側でも*を付けて展開する必要があります。
1 def total(a, b, c) 2 a + b + c 3 end 4 5 def wrapper(*args) 6 total_______ ^ 7 end 8 9 puts wrapper(1, 2, 3)
main.rb:1:in `total': wrong number of arguments (given 1, expected 3) (ArgumentError)
from main.rb:6:in `wrapper'
from main.rb:9:in `<main>'
空欄を埋めて実行を通す
*args自体は配列というただ1つのオブジェクトです。展開せずに渡すと「配列1個」という引数として扱われます。
次の問題