typestar

reduce en Ruby

Plegar una colección en un solo valor, de sumas a elecciones a medida.

nums = [3, 7, 2, 9, 4]

puts nums.reduce(:+)
puts nums.reduce(1) { |product, n| product * n }

longest = %w[cat horse ox].reduce do |best, w|
  w.length > best.length ? w : best
end
puts longest

# each_with_object lleva el acumulador sin devolverlo en cada pasada
index = %w[ruby gem rake].each_with_object({}) { |w, h| h[w[0]] = w }
puts index.inspect

Cómo funciona

  1. reduce(:+) pliega con un operador, sin bloque siquiera.
  2. Un valor semilla inicia el plegado; el bloque devuelve cada total nuevo.
  3. each_with_object arrastra un hash por el recorrido sin tener que devolverlo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
351
Tokens
96
Ritmo de tres estrellas
75 tpm

Al ritmo de tres estrellas de 75 tokens por minuto, este intento toma unos 77 segundos.

Escribe este fragmento

Paso 3 de 3 en Bloques e iteradores; paso 12 de 29 en Fundamentos del lenguaje.

← Anterior Siguiente →