[Ruby]配列を展開して関数の引数に使う

たくさんの引数を取る関数に対して、呼び出し前に配列を使って引数を用意し、呼び出し時には配列を展開して引数を渡すことができる。その際は、配列の直前にアスタリスク(*)を付ければよい。
特に、引数の数が不定の場合などに役立つ。

例:
# 配列の入った変数に対して
a = [1, 2, 3]
sprintf('%d %d %d', *a)
# => "1 2 3"

# 配列リテラルに対して直接使うこともできる
sprintf('%d %d %d', *[1, 2, 3])
# => "1 2 3"

逆に、不定個の引数を取る関数を定義したい場合には、仮引数にアスタリスクを付ける。

例:
def hoge(*a)
  p a
end
hoge(1, 2, 3, 4)
# [1, 2, 3, 4]
この場合、渡された複数の引数が入った配列がaに入る。