Реалізуйте операцію accumulate, яка, отримавши колекцію та операцію, яку слід виконати над кожним елементом колекції, повертає нову колекцію, що містить результат застосування цієї операції до кожного елемента вхідної колекції.
Маємо колекцію чисел:
І операцію:
x => x * x)Код має вміти утворити колекцію квадратів:
Перегляньте набір тестів, щоб побачити очікувану сигнатуру функції.
Не чіпайте ту функціональність collect/map/fmap/як-його-там, яку надає стандартна бібліотека! Розвʼяжіть цю вправу самостійно, використавши натомість інші базові інструменти.
Визначаючи методи для загального Enumerable, зазвичай викликають #to_enum на випадок, коли блок не передано.
Ось додатковий тест, який можна додати:
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
Зареєструйтеся на Exercism, щоб вивчати й опановувати Ruby, а також 21 концепція121 вправа та справжнє наставництво від людей, і все це безкоштовно.