typestar

yield en Ruby

Métodos que reciben un bloque y deciden cuándo ejecutarlo.

def timed
  start = Time.now
  result = yield
  puts "took #{(Time.now - start).round(4)}s"
  result
end

sum = timed { (1..100_000).sum }
puts sum

# block_given? hace que el bloque sea opcional
def maybe_log
  yield "saving" if block_given?
end

maybe_log { |msg| puts "log: #{msg}" }
maybe_log

Cómo funciona

  1. yield corre el bloque de quien llama desde dentro del método.
  2. El valor del bloque vuelve al método como cualquier expresión.
  3. block_given? vuelve el bloque opcional en lugar de un error.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
17
Caracteres a escribir
286
Tokens
69
Ritmo de tres estrellas
85 tpm

Al ritmo de tres estrellas de 85 tokens por minuto, este intento toma unos 49 segundos.

Escribe este fragmento

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

← Anterior Siguiente →