Por que ele coloca esse & antes de "campo"? Pra que serve isso? Porque se eu rodar o código sem isso funciona do mesmo jeito.
def livro_que_mais_vendeu_por(&campo)
que_mais_vendeu_por("livro", &campo)
end
Por que ele coloca esse & antes de "campo"? Pra que serve isso? Porque se eu rodar o código sem isso funciona do mesmo jeito.
def livro_que_mais_vendeu_por(&campo)
que_mais_vendeu_por("livro", &campo)
end
Olá Marcelle!
Peço desculpas pela demora em obter um retorno
Em Ruby, o & antes de um parâmetro de método é usado para converter um bloco em um objeto Proc.
No código que você compartilhou, o &campo indica que o parâmetro campo é um bloco que será convertido em um objeto Proc. Isso permite que o bloco seja passado como um argumento para outros métodos que esperam um bloco, como no caso do método que_mais_vendeu_por.
O método livro_que_mais_vendeu_por está definindo um parâmetro de bloco chamado campo, que será passado para o método que_mais_vendeu_por como um bloco. Ao usar o &campo, o bloco é convertido em um objeto Proc e pode ser tratado como um argumento normal do método.
No entanto, se você não utilizar o & antes do parâmetro campo, o bloco será tratado como um objeto normal, não como um bloco, e, portanto, não poderá ser passado para métodos que esperam um bloco como argumento. Se o método que_mais_vendeu_por não exigir um bloco como argumento, o código provavelmente funcionará sem o &, mas se esse método esperar um bloco, será necessário usar o & para converter o bloco em um objeto Proc antes de passá-lo como argumento.
Resumindo, o & antes do parâmetro campo permite que um bloco seja passado como argumento para o método que_mais_vendeu_por ao converter o bloco em um objeto Proc.
Claro! Aqui estão alguns links que podem ajudá-lo a entender melhor o uso do & antes de um parâmetro de método em Ruby para converter um bloco em um objeto Proc e documentação:
Espero que isso ajude!