O *
é o operador splat .
Ele expande um Array
para uma lista de argumentos, nesse caso, uma lista de argumentos para o Hash.[]
método. (Para ser mais preciso, ele expande qualquer objeto que responda a to_ary
/ to_a
ou to_a
no Ruby 1.9.)
Para ilustrar, as duas instruções a seguir são iguais:
method arg1, arg2, arg3
method *[arg1, arg2, arg3]
Também pode ser usado em um contexto diferente, para capturar todos os argumentos restantes do método em uma definição de método. Nesse caso, ele não se expande, mas combina:
def method2(*args) # args will hold Array of all arguments
end
Algumas informações mais detalhadas aqui .
a,b,*c = d,e,f,*g
define a = d, b = e ec = [f, g0, g1, g2, ..., gn], onde g = [g0, g1, g2, ..., gn]O operador splat descompacta uma matriz passada para uma função, para que cada elemento seja enviado à função como um parâmetro individual.
Um exemplo simples:
É isso aí!
fonte
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
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
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 umfor
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):
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:
Portanto, no seu exemplo, isso levaria ao seguinte Hash:
fonte