عملیات 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