Lambdas em Ruby são objetos que representam funções anônimas. Eles são úteis quando você precisa passar uma função como argumento para outra função ou quando deseja criar funções curtas e expressivas. Aqui está um guia prático sobre como usar lambdas em Ruby:
Criando uma lambda
Lambdas são criados usando a palavra-chave lambda ou ->. Aqui está um exemplo:
my_lambda = lambda { |x| x * 2 }
# ou
my_lambda = ->(x) { x * 2 }
Agora my_lambda é um objeto que representa uma função que multiplica seu argumento por 2.
Chamando uma lambda
Lambdas são chamados da mesma forma que uma função normal, usando a sintaxe lambda.call(argumento) ou simplesmente lambda(argumento). Aqui está um exemplo:
my_lambda = ->(x) { x * 2 }
resultado = my_lambda.call(3)
puts resultado # output: 6
Ou ainda, mais curto:
my_lambda = ->(x) { x * 2 }
resultado = my_lambda.(3)
puts resultado # output: 6
Passando uma lambda como argumento
Lambdas são frequentemente usados como argumentos de outras funções. Isso é especialmente útil quando você deseja passar uma função personalizada para uma função de ordem superior (como map, filter ou reduce). Aqui está um exemplo:
my_lambda = ->(x) { x * 2 }
# A função double_values aplica a função lambda em cada elemento do array
def double_values(array, fn)
array.map { |x| fn.call(x) }
end
valores = [1, 2, 3, 4]
resultado = double_values(valores, my_lambda)
puts resultado # output: [2, 4, 6, 8]
Capturando variáveis em uma lambda
Lambdas também podem capturar variáveis do escopo em que foram criados. Isso pode ser útil para criar funções que têm acesso a variáveis locais ou de instância. Aqui está um exemplo:
def create_lambda
mensagem = "Olá, mundo!"
-> { puts mensagem }
end
# Cria uma lambda que imprime "Olá, mundo!"
my_lambda = create_lambda()
my_lambda.call()
Nesse exemplo, a lambda captura a variável mensagem do escopo em que foi criada. Quando a lambda é chamada, ela imprime a mensagem "Olá, mundo!".
Conclusão
As lambdas em Ruby são objetos poderosos que podem ajudar a tornar seu código mais conciso e expressivo. Com este guia prático, você deve ter uma boa compreensão de como criar, chamar e passar lambdas como argumentos. Experimente criar suas próprias lambdas e usá-las em suas funções!
Top comments (0)