المسارات
/
Gleam
Gleam
/
المنهج
/
الاستدعاء الذاتي
ال

الاستدعاء الذاتي في Gleam

21 تمرينًا

نبذة عن الاستدعاء الذاتي

القدرة على تعريف شيء ما بدلالة نفسه تُسمّى العودية. وفي Gleam، تظهر العودية في أغلب الأحيان في الدوال العودية، وهي دوال تستدعي نفسها.

تحتاج الدالة العودية إلى حالة أساسية واحدة على الأقل وإلى حالة عودية واحدة على الأقل. الحالة الأساسية تُرجع قيمة دون استدعاء الدالة مرة أخرى. أما الحالة العودية فتستدعي الدالة مرة أخرى، مع تعديل المدخل بحيث يطابق الحالة الأساسية في مرحلة ما.

pub fn factorial(x: Int) -> Int {
  case x {
    // Base case
    1 -> 1

    // Recursive case
    _ -> x * factorial(x - 1)
  }
}

لا تملك Gleam صيغة خاصة بالحلقات، لذلك تُنجز كل الحلقات بالعودية.

pub fn list_length(list: List(String)) -> Int {
  case list {
    [] -> 0
    [_, ..rest] -> 1 + list_length(rest)
  }
}

تدعم Gleam أيضًا الأنواع المخصصة العودية. النوع المخصص العودي تكون إحدى صيغه أو أكثر مشيرة إلى نفسه في البيانات التي تحتويها.

pub type RussianDoll {
  Child               // Base case
  Mother(RussianDoll) // Recursive case
}
let very_big_doll = Mother(Mother(Mother(Child)))
let small_doll = Mother(Child)
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم الاستدعاء الذاتي

التدريب مقفل

افتح 8 تمارين إضافية لممارسة الاستدعاء الذاتي