Что означает * (звезда) в Ruby?

Возможный дубликат:
Что делает оператор * для этой строки в Ruby

Вероятно, есть ответ для этого в другом месте, но я просто не знаю, как его найти...

Если я прав, * означает несколько параметров, если они используются в определении функции:

def hero(name, *super_powers)

Но что делает * в коде следующим образом:

Hash[*[[:first_name, 'Shane'], [:last_name, 'Harvie']].flatten] # => {:first_name=>"Shane", :last_name=>"Harvie"}

Ответы

Ответ 1

Список аргументов переменной длины, оператор Asterisk

Последнему параметру метода может предшествовать звездочка (*), которую иногда называют оператором "splat". Это означает, что к функции может быть передано больше параметров. Эти параметры собираются и создается массив.

Оператор звездочки также может предшествовать аргументу Array в вызове метода. В этом случае массив будет расширен и значения пройдены, как если бы они были разделены запятыми.