الطريقة reduce
جزء من قسم المنطق وتدفّق التنفيذ في رحلة GDScript على Coddy. الدرس 62 من 78.
تجمع reduce() كل عناصر المصفوفة في قيمة واحدة: مجموع، أو حاصل ضرب، أو أكبر عنصر، أو جملة.
var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)10يأخذ وسيطين: دالة وقيمة بداية، وهي هنا 0. تستقبل الدالة النتيجة حتى الآن، وتُسمّى المُراكِم (acc)، والعنصر التالي. وما تُعيده يصبح المُراكِم الجديد:
- تبدأ قيمة
accعند0 0 + 1تساوي1، و1 + 2تساوي3، و3 + 3تساوي6، و6 + 4تساوي10- بعد العنصر الأخير، تُعيد
reduce()المُراكِم:10
بالنسبة إلى حاصل الضرب، ابدأ من 1: numbers.reduce(func(acc, n): return acc * n, 1) يساوي 24.
من دون قيمة ابتدائية، يكون العنصر الأول هو نقطة البداية، وتُنفَّذ الدالة بدءًا من العنصر الثاني. وهذا مناسب للعثور على أكبر عنصر:
var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9في مصفوفة فارغة من دون قيمة ابتدائية، تُرجع reduce() القيمة null، لذا حدّد قيمة ابتدائية عندما تكون المصفوفة فارغة.
يمكن أن يكون للمُراكِم أي نوع. باستخدام قيمة بداية ""، يُنشئ هذا سلسلةً من الأحرف الأولى:
var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # goالتحدي
سهليقرأ البرنامج سطرًا واحدًا من الأعداد الكلية المفصولة بفواصل، ويخزنها في المصفوفة numbers. هذا الجزء مكتوب مسبقًا.
استخدم reduce() لكل عملية منها، واطبع ثلاثة أسطر:
- مجموع الأعداد
- حاصل ضربها
- أكبر عدد (اكتب المقارنة داخل دالة lambda؛ لا تستدعِ
max())
يوجد دائمًا عدد واحد على الأقل. بالنسبة إلى الإدخال 3,7,2,8,4، يكون الناتج:
24
1344
8جرّب بنفسك
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# اطبع المجموع وحاصل الضرب والعدد الأكبر، كلًّا منها باستخدام reduce()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفّق التنفيذ
1السلاسل النصية بالتفصيل
أساليب السلاسل النصيةالبحث داخل السلاسل النصيةالاستبدال وإزالة المسافات الطرفيةالتقسيم والدمجمراجعة - التحقق من اسم المستخدم4القواميس، الجزء الثاني
القواميس المتداخلةمصفوفات من القواميسدمج القواميسنسخ القواميسمراجعة - عدّ التكرارات2اتخاذ القرارات المتقدم
المطابقة باستخدام المتغيراتشروط المطابقةأنماط المصفوفاتأنماط القواميسالتحقق من العضويةمراجعة - محلل الأوامر5تطبيق دفتر جهات الاتصال
عرض القائمةإضافة جهة اتصال8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب11الدوال عالية الرتبة
الطريقة mapالطريقة filterالطريقة reduceany و allمراجعة - مدقّق البريد الإلكترونيمراجعة - معالج الأعداد3المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادالمصفوفات المتعرجةأنماط شائعة للمصفوفات ثنائية الأبعادمراجعة - لوحة اللعبة6المجموعات باستخدام القواميس
ما هي المجموعة؟القاموس كمجموعةالإضافة والإزالةالاتحاد والتقاطعفرق المجموعاتمراجعة - إزالة العناصر المكررة9تجميع البيانات المتقدم
جمع القيمإيجاد الحد الأدنى والحد الأقصىالترتيب المخصصمراجعة - أداة ترتيب القواميستدرّب بنفسك: مترجم GDScript عبر الإنترنت