Implementa a operação accumulate, que, dada uma coleção e uma operação a aplicar a cada elemento dessa coleção, devolve uma nova coleção com o resultado da aplicação dessa operação a cada elemento da coleção de entrada.
Dada a coleção de números:
E a operação:
x => x * x)O teu código deve ser capaz de produzir a coleção dos quadrados:
Dá uma vista de olhos à suite de testes para veres a assinatura esperada da função.
Não mexas na funcionalidade collect/map/fmap, ou lá como lhe chamam, que a tua biblioteca padrão oferece! Resolve este exercício sozinho, recorrendo a outras ferramentas básicas.
É habitual chamar #to_enum quando defines métodos para um Enumerable genérico, para o caso de não ser passado nenhum bloco.
Eis um teste adicional que podes acrescentar:
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
Inscreve-te no Exercism para aprenderes e dominares Ruby com 21 conceitos121 exercícios, e mentoria humana real, tudo grátis.