はじめに
今回は可変長引数に関する内容です。メソッドを呼び出して可変長引数で値を受取る際、呼び出し側の引数が[]か()かで可変長引数の値の取得結果が異なっていたので簡単にまとめてみます。
確認してみた
環境はruby2.5.3です。
まず、可変長引数が設定されたメソッドを作成し実行する。
class Cls
def Foo(*args)
p args
p *args
p args[0]
end
end
次に[]と()を引数としてFooメソッドをそれぞれ呼び出す。
irb(main):008:0> Cls.new.Foo [1,2,3]
[[1, 2, 3]]
[1, 2, 3]
[1, 2, 3]
irb(main):009:0> Cls.new.Foo(1,2,3)
[1, 2, 3]
1
2
3
1
出力された値に差異があった。
おわりに
確認した結果、呼び出し側の引数が()か[]かで可変長引数の値の取得結果が異なっていた。
可変長引数は配列に対して引数の値を格納し、配列を渡した場合は二重配列となるので注意が必要かもしれないです。もし誤っていたらご指摘いただけると助かります!
参考