Lambdas
Procs con aridad estricta
Lambdas es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.
Procs de aridad estricta
Una lambda es un tipo especial de Proc que se comporta más como un método normal: comprueba el número de argumentos y trata return de la forma habitual. Úsela cuando desee un comportamiento predecible, similar al de un método.
square = lambda { |x| x * x }
puts square.call(6)La lambda con flecha
La sintaxis de flecha ->, apodada «stabby lambda», es la forma más habitual de escribir lambdas. Los parámetros se indican entre paréntesis.
add = ->(a, b) { a + b }
puts add.call(4, 5)Llamar a lambdas
Las lambdas admiten los mismos estilos de llamada que los Procs: .call, .() y [ ].
triple = ->(x) { x * 3 }
puts triple.call(2)
puts triple.(2)
puts triple[2]Comprobación estricta de argumentos
A diferencia de un Proc, una lambda genera un ArgumentError si se le pasa un número incorrecto de argumentos. Esto permite detectar errores pronto.
greet = ->(name) { "Hi #{name}" }
puts greet.call("Sam")
begin
greet.call
rescue ArgumentError => e
puts "Error: #{e.message}"
endreturn permanece local
Un return dentro de una lambda sale únicamente de la lambda y, después, la ejecución continúa. Esto coincide con el comportamiento de los métodos.
def demo
l = -> { return 10 }
l.call
20 # this runs
end
puts demoComprobar si es una lambda
Tanto los Procs como las lambdas son instancias de Proc. Use lambda? para distinguirlos.
l = ->(x) { x }
pr = proc { |x| x }
puts l.lambda?
puts pr.lambda?Lambdas sin argumentos
Omita los paréntesis cuando una lambda no tenga parámetros.
now = -> { Time.now.year }
puts "Year: #{now.call}"Lambdas de varias líneas
Las lambdas pueden ocupar varias líneas. La última expresión es el valor de retorno.
classify = ->(n) {
return "zero" if n.zero?
n.positive? ? "positive" : "negative"
}
puts classify.call(0)
puts classify.call(-3)Pasar lambdas a métodos
Al igual que los Procs, las lambdas se convierten en bloques mediante &, por lo que pueden utilizarse con map, select y otros métodos similares.
doubler = ->(n) { n * 2 }
p [1, 2, 3].map(&doubler)Lambdas como valores de retorno
Un método puede crear y devolver una lambda, lo que permite crear funciones especializadas sobre la marcha.
def multiplier(by)
->(n) { n * by }
end
times10 = multiplier(10)
puts times10.call(5)Cómo encaja todo
Las lambdas son Procs estrictos, similares a los métodos:
- Escríbalas con
lambda { }o->(args) { }. - Exigen una aridad correcta y mantienen
returnen el ámbito local. - Úselas cuando la corrección sea importante o cuando cree funciones para devolverlas.
is_even = ->(n) { n.even? }
p [1, 2, 3, 4, 5, 6].select(&is_even)Comprobación rápida
Compruebe su comprensión de las lambdas.
Repaso
Ha aprendido sobre las lambdas:
- Una lambda es un Proc estricto; escríbala con
->. - Exige un número correcto de argumentos.
returnsale únicamente de la lambda.lambda?la distingue de un Proc normal.
area = ->(w, h) { w * h }
puts area.call(3, 4)Preguntas frecuentes
¿La lección «Lambdas» es gratis?
Sí — el texto completo de «Lambdas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Lambdas»?
Procs con aridad estricta Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Ruby Academy?
No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Lambdas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?
Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.