El *
es el operador splat .
Expande una Array
lista de argumentos, en este caso una lista de argumentos del Hash.[]
método. (Para ser más precisos, expande cualquier objeto que responda a to_ary
/ to_a
, o to_a
en Ruby 1.9.)
Para ilustrar, las siguientes dos afirmaciones son iguales:
method arg1, arg2, arg3
method *[arg1, arg2, arg3]
También se puede usar en un contexto diferente, para capturar todos los argumentos de método restantes en una definición de método. En ese caso, no se expande, sino que combina:
def method2(*args) # args will hold Array of all arguments
end
Alguna información más detallada aquí .
a,b,*c = d,e,f,*g
establece a = d, b = e, y c = [f, g0, g1, g2, ..., gn], donde g = [g0, g1, g2, ..., gn]El operador splat desempaqueta un conjunto pasado a una función para que cada elemento se envíe a la función como un parámetro individual.
Un simple ejemplo:
¡Eso es!
fuente
Como todos mencionan, es un "splat". Buscar la sintaxis de Ruby es imposible, y lo he hecho en otras preguntas. La respuesta a esa parte de la pregunta es que buscas en
en Google. Google está ahí para ti, solo pon lo que ves en palabras.
De todos modos, como muchos códigos Ruby, ese código es bastante denso. los
hace que un conjunto de elementos seis,
first_name, mickey, last_name, mouse, country, usa
. Luego, el splat se usa para convertirlo en un Hash. Ahora la gente de Ruby siempre te envía a mirar el método Splat, ya que todo está expuesto en Ruby. No tengo idea de dónde está, pero una vez que tenga eso, verá que se ejecuta afor
través de la matriz y crea el hash.Buscaría el código en la documentación principal . Si no puede encontrarlo (no pude), intente escribir un código como este (que funciona, pero NO es un código similar a Ruby):
y luego la pandilla Ruby podrá decirte por qué tu código es tonto, malo o simplemente incorrecto.
Si ha leído hasta aquí, lea la documentación de Hash para la inicialización.
Básicamente, un hash que se inicializa con varios argumentos los crea como pares de valores clave:
Entonces, en su ejemplo, esto conduciría al siguiente Hash:
fuente