تخطَّ إلى المحتوى

الدوال

منقول من الكتاب المرجعي: docs/handbook/language/05-functions.md · الإيداع 7a52f6c

القاعدة. داله الاسم(المعامل النوع, ...) نوع_الإرجاع: ثم الجسم. نوع الإرجاع فراغ لدالة لا ترجع قيمة. الدالة في المستوى الأعلى وحده (لا دوال متداخلة)، وتُستدعى بعد تعريفها في الملف. كل مسار في دالة لها نوع إرجاع ينتهي بـارجع، وإلا تحذير عند الترجمة وخطأ تشغيل إن بلغ النهاية.

  • معامل نوعه صنف بلا عناصر (ق قائمة) يجعل الدالة عامة: تُنسخ لكل نوع وسيط تُستدعى به.
  • المعاملات بالقيمة كما الإسناد: القائمة والقاموس مرجعيان، والهيكل والمصفوفة يُنسخان.
  • آخر معامل من النوع مخصص يجوز تركه: يُمرَّر الافتراضي (الذاكرة: المخصصات وخاتمه).
  • العودية مسموحة؛ امتلاء المكدس خطأ تشغيل لا انهيار.
  • مؤشر الدالة (منذ 0.7.0): النوع داله(عدد) عدد، والقيمة اسم دالة معرَّفة بلا أقواس، ويُستدعى باسم متغير أو معامل، أو بتعبير (منذ 0.8.0): ق0 <small>(وثيقة في مستودع المجمّع)</small>، ع.ف(س)، اختر(1)(9).
  • خطر داله دالة جسمها منطقة خطرة (الطبقة المنخفضة: خطر والشرائح والمؤشرات).
مثال
داله اكبر_عنصر(ق قائمة) عدد:
اكبر = ق[0]
لكل ع في ق:
اذا ع > اكبر:
اكبر = ع
ارجع اكبر
داله ضاعف(س عدد) عدد:
ارجع س * 2
داله طبّق(ف داله(عدد) عدد, س عدد) عدد:
ارجع ف(س)
داله مضروب(ن عدد) عدد:
اذا ن <= 1:
ارجع 1
ارجع ن * مضروب(ن - 1)
اطبع(اكبر_عنصر([3, 9, 2]), " ", طبّق(ضاعف, 21), " ", مضروب(10))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
9 42 3628800

واستدعاء التعبير (منذ 0.8.0): عنصر قائمة من الدوال، وحقل من نوع داله، ونتيجة دالة ترجع دالة:

مثال
داله ضعف(س عدد) عدد:
ارجع س * 2
داله مربع(س عدد) عدد:
ارجع س * س
هيكل عملية:
اسم نص
ف داله(عدد) عدد
داله اختر(ي عدد) داله(عدد) عدد:
اذا ي == 0:
ارجع ضعف
ارجع مربع
ق قائمة[داله(عدد) عدد] = [ضعف, مربع]
ع = عملية("مربع", مربع)
اطبع(ق[0](5), " ", ع.ف(7), " ", اختر(1)(9))
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
10 49 81

القيود المعروفة. لا قيم افتراضية للمعاملات (إلا المخصص الأخير)، ولا وسائط مسمّاة (إلا لإنشاء الهياكل). لا إغلاقات. ومؤشر الدالة لا يرجع !ن (بعد 1.0).

أخطاء محتملة.

مثال
اطبع(ضعف(2))
داله ضعف(س عدد) عدد:
ارجع س * 2
المخرج المسجَّل في الكتاب المرجعيmeem برنامج.م · 0.10.0
​[خطأ دلالي E0125] سطر 1:6 - الدالة أو الهيكل 'ضعف' غير معرّف   1 | اطبع(ضعف(2))     |      ^~~  تلميح: هل تقصد 'اضف'؟

رمز الخروج: 2

في فهرس الأخطاء: E0125