ruby splat

¿Qué significa la*(estrella) en Ruby?



splat (1)

Posible duplicado:
¿Qué hace el operador * de esta cadena en Ruby?

Probablemente hay una respuesta para eso en otro lugar, pero no sé cómo encontrarlo ...

Si tengo razón, el * significa múltiples parámetros si se usa en la definición de la función:

def hero(name, *super_powers)

Pero, ¿qué hace * en el código de esta manera:

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


Lista de argumentos de longitud variable, operador de asterisco

El último parámetro de un método puede ir precedido por un asterisco (*), que a veces se denomina operador "splat". Esto indica que se pueden pasar más parámetros a la función. Esos parámetros se recogen y se crea una matriz.

El operador de asterisco también puede preceder a un argumento de Array en una llamada de método. En este caso, la matriz se expandirá y los valores se pasarán como si estuvieran separados por comas.