typestar

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

  1. -> construye una lambda; .call y .() la invocan por igual.
  2. lambda y proc difieren en el chequeo de aridad y en el return.
  3. Una lista de invocables se pliega sobre un valor un paso a la vez.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Métodos y bloques; paso 18 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →