Olá, preciso de uma ajuda para entender esses dois códigos que deram um nó na minha cabeça. Podem me explicar detalhadamente o que faz exatamente cada um deles? Por que foi trocado o método sort por select? Qual a função do operador '<=>'? Vai ser criado uma enpécie de array para que o método .last funcione?
def livro_que_mais_vendeu_por(&campo)
@vendas.sort {|v1,v2| quantidade_de_vendas_por(v1, &campo) <=> quantidade_de_vendas_por(v2, &campo)}.last
end
def que_mais_vendeu_por(tipo, &campo)
@vendas.select { | l | l.tipo == tipo}.sort {|v1,v2| quantidade_de_vendas_por(v1, &campo) <=> quantidade_de_vendas_por(v2, &campo)}.last
end