Procs e Lambdas em Ruby
Procs e lambdas são ferramentas em Ruby que permitem encapsular blocos de código para serem usados como objetos. Embora sejam semelhantes, eles apresentam algumas diferenças importantes.
Processos: Link to heading
- Eles são criados usando Proc.new ou o e comercial (&) antes do nome da variável.
- Podem ser passados como argumentos para outros métodos.
- Podem ser armazenados em variáveis ou constantes.
- Podem ser executados como blocos ou como métodos.
Exemplo: Link to heading
saudacao = Proc.new { |nome| puts "Olá #{nome}" }
saudacao.call("john") # => "Olá john"
def saudacao_com_proc(proc, nome)
proc.call(nome)
end
saudacao_com_proc(saudacao, "ana") # => "Olá ana"
Lambdas: Link to heading
- Eles são criados usando lambda ou a seta (->).
- Eles se comportam como métodos anônimos.
- Podem ser passados como argumentos para outros métodos.
- Podem ser armazenados em variáveis ou constantes.
Exemplo: Link to heading
saudacao = lambda { |nome| puts "Olá #{nome}" }
saudacao.call("ana") # => "Olá ana"
def saudacao_com_lambda(lambda, nome)
lambda.call(nome)
end
saudacao_com_lambda(saudacao, "john") # => "Olá john"
Diferenças: Link to heading
- Return: Um retorno dentro de um proc apenas sai do bloco, enquanto em um lambda ele sai do método que o contém.
- Argumentos: Os argumentos em lambdas são obrigatórios e devem ser passados em ordem, enquanto em procs são opcionais.
- Eficiência: procs geralmente são mais lentos que lambdas.
Em resumo: Link to heading
- Procs: Mais flexível, pode ser usado como blocos ou métodos.
- Lambdas: Mais eficientes, se comportam como métodos anônimos.
Escolha: Link to heading
A escolha entre um proc e um lambda depende das necessidades específicas do programa.
Continue aprendendo sobre procs e lambdas para aproveitar ao máximo seus benefícios em seus programas!
Dicas adicionais: Link to heading
- Você pode usar procs para criar fechamentos.
- Você pode usar lambdas para criar funções anônimas.
- Você pode usar procs e lambdas para evitar duplicação de código.
Continue experimentando procs e lambdas para criar programas mais elegantes e eficientes!
Aqui estão alguns exemplos adicionais de como procs e lambdas podem ser usados: Link to heading
- Filtrar dados
- Classificar dados
- Dados do grupo
- Calcular valores
- Validar entrada
- Formatar texto
As possibilidades são infinitas!