Menu
CoddyTech
flag Ar iconالعربيةdown icon

الطريقة map

جزء من قسم المنطق وتدفّق التنفيذ في رحلة GDScript على Coddy. الدرس 60 من 78.

الدالة عالية الرتبة هي دالة تأخذ دالة أخرى وسيطًا. تحتوي المصفوفات على عدة دوال منها، وmap() هي أولها.

تستدعي map() دالةً لكل عنصر في مصفوفة، وتُرجع مصفوفة جديدة بالنتائج، بالترتيب نفسه:

func square(n):
	return n * n
var numbers = [1, 2, 3, 4, 5]
var squares = numbers.map(square)
print(squares)
[1, 4, 9, 16, 25]

مرّر الدالة باسمها، من دون أقواس: map(square) يمرّر الدالة، بينما map(square()) سيحاول استدعاءها فورًا. ثم تستدعي map() الدالة مرة واحدة لكل عنصر: يتحول 1 إلى 1، و2 إلى 4، و3 إلى 9، وهكذا.

في عملية حسابية قصيرة، توفّر لك دالة lambda الحاجة إلى تعريف دالة منفصلة:

var squares = numbers.map(func(n): return n * n)

للمصفوفة الجديدة الحجم نفسه الذي للمصفوفة الأصلية، ولا تتغير numbers نفسها. ويمكن أن تكون النتائج من نوع مختلف عن العناصر:

var words = ["apple", "kiwi", "banana"]
print(words.map(func(w): return w.length()))
[5, 4, 6]

تُرجع map() مصفوفة عادية Array، حتى عند استدعائها على مصفوفة ذات نوع محدد مثل Array[int]. يؤدي تخزين هذه النتيجة في متغير من النوع Array[int] إلى إيقاف البرنامج بسبب خطأ، لذا خزّنها في متغير غير محدد النوع أو في Array.

تعيد split() قيمة من النوع PackedStringArray، الذي لا يحتوي على map(). حوِّلها أولًا إلى Array: تعطي Array("1,2,3".split(",")).map(func(s): return int(s)) القيمة [1, 2, 3].

challenge icon

التحدي

سهل

اكتب دالة باسم convert_to_uppercase تأخذ مصفوفة من السلاسل النصية، strings، وتُعيد مصفوفة جديدة تكون فيها كل سلسلة بأحرف كبيرة.

استخدم map() مع دالة لامبدا، ومن دون استخدام حلقة. على سبيل المثال، تُعيد convert_to_uppercase(["hello", "world"]) القيمة ["HELLO", "WORLD"].

تستدعي الاختبارات convert_to_uppercase() بنفسها. لا تستدعها، ولا تطبع أي شيء.

جرّب بنفسك

func convert_to_uppercase(strings: Array[String]):
	# اكتب الكود هنا
	pass
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفّق التنفيذ

تدرّب بنفسك: مترجم GDScript عبر الإنترنت