Implementa la operación accumulate, que, dada una colección y una operación que se debe aplicar a cada elemento de la colección, devuelve una nueva colección con el resultado de aplicar esa operación a cada elemento de la colección de entrada.
Dada la colección de números:
Y la operación:
x => x * x)Tu código debería poder producir la colección de cuadrados:
Revisa la suite de pruebas para ver la firma de función esperada.
¡No toques esa funcionalidad de collect/map/fmap/whatchamacallit que te ofrece tu biblioteca estándar! Resuelve este ejercicio por tu cuenta usando otras herramientas básicas.
Es común llamar a #to_enum al definir métodos para un Enumerable genérico, en caso de que no se pase un bloque.
Aquí tienes una prueba adicional que podrías agregar:
def test_accumulate_when_block_is_deferred
skip
accumulate_enumerator = [1, 2, 3].accumulate
accumulated_result = accumulate_enumerator.map do |number|
number * number
end
assert_equal [1, 4, 9], accumulated_result
end
Regístrate en Exercism para aprender y dominar Ruby con 21 conceptos121 ejercicios y mentoría humana real, todo gratis.