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
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!