Como todo mundo menciona, é um "splat". Procurar a sintaxe do Ruby é impossível, e eu fiz isso em outras perguntas. A resposta para essa parte da pergunta é que você pesquisa no
asterisk in ruby syntax
no Google. O Google está aí para você, basta colocar o que vê em palavras.
De qualquer forma, como muitos códigos Ruby, esse código é bastante denso. o
line.split(/=|;/)
cria uma matriz de seis elementos first_name, mickey, last_name, mouse, country, usa
,. Em seguida, o splat é usado para transformar isso em um hash. Agora, o pessoal do Ruby sempre o envia para examinar o método Splat, pois tudo é exposto no Ruby. Eu não tenho idéia de onde está, mas depois que você tiver isso, verá que ele executa um for
através da matriz e cria o hash.
Você procuraria o código na documentação principal . Se você não conseguir encontrá-lo (não consegui), tente escrever um código como este (que funciona, mas NÃO é um código semelhante ao Ruby):
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"]
e então a turma do Ruby poderá lhe dizer por que seu código é bobo, ruim ou simplesmente errado.
Se você leu até aqui, leia a documentação do Hash para inicialização.
Basicamente, um hash inicializado com vários argumentos os cria como pares de valores-chave:
Hash["a", 100, "b", 200] #=> {"a"=>100, "b"=>200}
Portanto, no seu exemplo, isso levaria ao seguinte Hash:
{"first_name"=>"mickey", "last_name"=>"mouse", "county"=>"usa"}
a,b,*c = d,e,f,*g
define a = d, b = e ec = [f, g0, g1, g2, ..., gn], onde g = [g0, g1, g2, ..., gn]