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

دوال 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 لا يغيّر المتغير خارجه.

challenge icon

التحدي

سهل

يقرأ البرنامج عددًا صحيحًا. أنشئ دالة لامبدا وخزّنها في متغير اسمه categorize_number. تأخذ عددًا واحدًا وتُرجع:

  • Positive إذا كان العدد أكبر من 0
  • Zero إذا كان العدد 0
  • Negative إذا كان العدد أقل من 0

استدعِها باستخدام العدد الذي قرأته واطبع النتيجة. للمدخل 10، يكون الناتج:

Positive

جرّب بنفسك

extends Node

func _ready():
	var number := int(OS.read_string_from_stdin())
	# أنشئ دالة lambda المجهولة categorize_number هنا

	# استدعِها باستخدام number واطبع النتيجة
quiz iconاختبر نفسك

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

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

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