アスタリスクは、「呼び出す側」と「呼び出される側」に付ける事ができます。
両者の違いは以下になります。
呼び出す側の引数にアスタリスクを付けると与えられた配列は展開されます。
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 [] "-----"