Como todos mencionan, es un "splat". Buscar la sintaxis de Ruby es imposible, y lo he preguntado en otras preguntas. La respuesta a esa parte de la pregunta es que busca en
asterisk in ruby syntax
en Google. Google está ahí para ti, simplemente pon lo que ves en palabras.
Anyhoo, como un montón de código de Ruby, ese código es bastante denso. El
line.split(/=|;/)
hace una serie de seis elementos, first_name, mickey, last_name, mouse, country, usa
. Luego, el splat se usa para convertirlo en 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 ejecuta un for
a través de la matriz y crea el hash.
Buscaría el código en la documentación core. Si no lo encuentra (no podría), se trataría de escribir algo de código como este (que funciona, pero no es el código Ruby-like):
line = "first_name=mickey;last_name=mouse;country=usa"
presplat = line.split(/=|;/)
splat = Hash.new
for i in (0..presplat.length-1)
splat[presplat[i]] = presplat[i+1] if i%2==0
end
puts splat["first_name"]
y luego la banda de Ruby será capaz de decirle usted por qué su código es tonto, malo o simplemente erróneo.
Si ha leído hasta aquí, lea a través de la documentación Hash, que no explica el splat, pero sí lo necesita.
En general, cuando se utiliza como en una situación similar a LHS (cada vez que se invoca en un valor), splat divide una matriz en valores separados, y cuando se utiliza en una situación similar a RHS (cada vez que ' volver a usarlo en algunas variables no definidas anteriormente), agrupa los valores por separado en una matriz. Entonces '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] – rampion
excelente respuesta, clara y detallada, gracias –
Para completar, el operador de splat convierte una matriz en una lista vacía según la terminología utilizada en 'The Well Grounded Rubyist' por David A. Negro –