Что означает * (звезда) в 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 в вызове метода. В этом случае массив будет расширен и значения пройдены, как если бы они были разделены запятыми.