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
reduce(:+)pliega con un operador, sin bloque siquiera.- Un valor semilla inicia el plegado; el bloque devuelve cada total nuevo.
each_with_objectarrastra un hash por el recorrido sin tener que devolverlo.
Palabras clave y builtins usados aquí
doendputs
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.
Paso 3 de 3 en Bloques e iteradores; paso 12 de 29 en Fundamentos del lenguaje.