上級 › 可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる › パターン5
可変長引数を委譲するメソッドで * を付け忘れると ArgumentError になる
受け取った可変長引数(*argsで受けた配列)をそのまま別のメソッドに渡すには、呼び出し側でも*を付けて展開する必要があります。
1 def build(a, b, c) 2 [a, b, c] 3 end 4 5 def wrapper(*args) 6 build_______ ^ 7 end 8 9 puts wrapper(7, 8, 9).inspect
main.rb:1:in `build': wrong number of arguments (given 1, expected 3) (ArgumentError)
from main.rb:6:in `wrapper'
from main.rb:9:in `<main>'
空欄を埋めて実行を通す
*argsで集めた引数を他のメソッドへ委譲するラッパーを書くときは、渡す側にも*を付ける必要があります。
次の問題