Procs y lambdas en Ruby
Bloques capturados como objetos que puedes guardar, pasar y componer.
double = ->(n) { n * 2 }
puts double.call(21)
puts double.(5)
add = lambda { |a, b| a + b }
puts add.call(2, 3)
shout = proc { |w| w.to_s.upcase }
puts shout.call("hey")
# los procs son objetos: guárdalos, pásalos, encadénalos
steps = [double, ->(n) { n + 1 }]
puts steps.reduce(10) { |acc, fn| fn.call(acc) }
Cómo funciona
->construye una lambda;.cally.()la invocan por igual.lambdayprocdifieren en el chequeo de aridad y en el return.- Una lista de invocables se pliega sobre un valor un paso a la vez.
Palabras clave y builtins usados aquí
lambdaprocputs
El intento, en números
- Líneas
- 13
- Caracteres a escribir
- 312
- Tokens
- 106
- Ritmo de tres estrellas
- 75 tpm
Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 85 segundos.
Paso 3 de 3 en Métodos y bloques; paso 18 de 29 en Fundamentos del lenguaje.