دوال Lambda - الجزء الثاني
جزء من قسم المنطق وتدفّق التنفيذ في رحلة GDScript على Coddy. الدرس 55 من 78.
يمكن لدالة lambda ذات السطر الواحد اختيار نتيجتها باستخدام العامل الثلاثي، value_if_true if condition else value_if_false:
var check_age = func(age): return "Adult" if age >= 18 else "Minor"
print(check_age.call(20)) # Adultلأكثر من حالتين، أضِف تعبيرًا شرطيًا ثلاثيًا ثانيًا بعد else، أو اكتب الدالة اللامدا على شكل كتلة باستخدام if وelif:
var grade = func(score):
if score == 100:
return "Perfect"
elif score >= 60:
return "Pass"
return "Fail"
print(grade.call(75)) # Passبما أن تعبير lambda قيمة، يمكنك تمريره إلى دالة. صرّح عن المعامل بالنوع Callable وشغّله باستخدام call():
func apply_twice(fn: Callable, value):
return fn.call(fn.call(value))print(apply_twice(func(n): return n + 3, 1)) # 7يمكن تمرير دالة مسماة بالطريقة نفسها: اكتب اسمها دون أقواس، كما في apply_twice(double, 5).
تقبل الطرق المضمنة الدوال أيضًا. ترتب sort_custom() مصفوفةً باستخدام دالة لامدا تستقبل عنصرين وتُرجع true عندما يجب أن يأتي العنصر الأول قبل الثاني:
var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]يمكن للتعبير lambda قراءة المتغيرات المحلية المحيطة به، لكنه ينسخ قيمها عند إنشائه. لا يصل تغيير مثل هذا المتغير لاحقًا إلى التعبير lambda، كما أن إسناد قيمة إليه داخل التعبير lambda لا يغيّر المتغير خارجه.
التحدي
سهليقرأ البرنامج عددًا صحيحًا. أنشئ دالة لامبدا وخزّنها في متغير اسمه categorize_number. تأخذ عددًا واحدًا وتُرجع:
Positiveإذا كان العدد أكبر من0Zeroإذا كان العدد0Negativeإذا كان العدد أقل من0
استدعِها باستخدام العدد الذي قرأته واطبع النتيجة. للمدخل 10، يكون الناتج:
Positiveجرّب بنفسك
extends Node
func _ready():
var number := int(OS.read_string_from_stdin())
# أنشئ دالة lambda المجهولة categorize_number هنا
# استدعِها باستخدام number واطبع النتيجة
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفّق التنفيذ
1السلاسل النصية بالتفصيل
أساليب السلاسل النصيةالبحث داخل السلاسل النصيةالاستبدال وإزالة المسافات الطرفيةالتقسيم والدمجمراجعة - التحقق من اسم المستخدم4القواميس، الجزء الثاني
القواميس المتداخلةمصفوفات من القواميسدمج القواميسنسخ القواميسمراجعة - عدّ التكرارات10الدوال المتقدمة
إرجاع قيم متعددةدوال Lambda - الجزء الأولدوال Lambda - الجزء الثانيمراجعة - الفرز باستخدام Lambdaالدوال التكرارية - الجزء الأولالدوال التكرارية - الجزء الثانيمراجعة - جمع مصفوفة متداخلة2اتخاذ القرارات المتقدم
المطابقة باستخدام المتغيراتشروط المطابقةأنماط المصفوفاتأنماط القواميسالتحقق من العضويةمراجعة - محلل الأوامر5تطبيق دفتر جهات الاتصال
عرض القائمةإضافة جهة اتصال8مدير سجلات الطلاب
نظرة عامة على المشروعإضافة طالب3المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادالمصفوفات المتعرجةأنماط شائعة للمصفوفات ثنائية الأبعادمراجعة - لوحة اللعبة6المجموعات باستخدام القواميس
ما هي المجموعة؟القاموس كمجموعةالإضافة والإزالةالاتحاد والتقاطعفرق المجموعاتمراجعة - إزالة العناصر المكررة9تجميع البيانات المتقدم
جمع القيمإيجاد الحد الأدنى والحد الأقصىالترتيب المخصصمراجعة - أداة ترتيب القواميستدرّب بنفسك: مترجم GDScript عبر الإنترنت