نفّذ عملية accumulate التي تأخذ مجموعة وعملية تُجرى على كل عنصر من عناصرها، ثم تُرجع مجموعة جديدة تحتوي على نتائج تطبيق تلك العملية على كل عنصر من عناصر المجموعة المدخلة.
لنأخذ مجموعة الأعداد التالية:
والعملية التالية:
x => x * x)يجب أن يكون الكود قادرًا على إنتاج مجموعة المربعات:
ألقِ نظرة على حزمة الاختبارات لمعرفة توقيع الدالة المتوقع.
لا تلمس تلك الوظائف المسمّاة collect أو map أو fmap أو أيًّا كان اسمها، والتي توفّرها مكتبتك القياسية!
حلّ هذه بنفسك باستخدام أدوات أساسية أخرى بدلًا منها.
من المعتاد استدعاء #to_enum عند تعريف طُرق لأي Enumerable عام، في حال عدم تمرير أي كتلة.
إليك اختبارًا إضافيًا يمكنك إضافته:
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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.