DEV Community

Alef Ojeda de Oliveira
Alef Ojeda de Oliveira

Posted on

Guia básico sobre lambda em Ruby

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 }
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ou ainda, mais curto:

my_lambda = ->(x) { x * 2 }
resultado = my_lambda.(3)
puts resultado # output: 6
Enter fullscreen mode Exit fullscreen mode

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]
Enter fullscreen mode Exit fullscreen mode

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()
Enter fullscreen mode Exit fullscreen mode

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)