̃Gg[͂ĂȃubN}[Nɒlj

Ruby :: メソッド引数のアスタリスクの意味



アスタリスクは、「呼び出す側」と「呼び出される側」に付ける事ができます。
両者の違いは以下になります。

呼び出す側に付けた場合

呼び出す側の引数にアスタリスクを付けると与えられた配列は展開されます。

def hoge(a, b, c, d)
    p a
    p b
    p c
    p d
end
 
arr = [111, 222, 333]
hoge(1, *arr)

実行結果↓

1
111
222
333

※. 呼び出す側で与える引数の数と、呼び出される側で与えられる引数の数が同じでないとエラーになります。
上記の例だと、arr = [111,222] や arr = [111, 222, 333, 444]はNGということです。



呼び出される側に付けた場合

呼び出される側のアスタリスクは配列にまとめてしまいます。

def hoge(a, b, c, *d)
    p a
    p b
    p c
    p d
    p '-----'
end
 
hoge(1, 2, 3, 4, 5)
hoge(1, 2, 3, 4)
hoge(1, 2, 3)

実行結果↓

1
2
3
[4, 5]
"-----"
1
2
3
[4]
"-----"
1
2
3
[]
"-----"




programming/ruby/etc/parameter_asterisk.txt