با

بازگشت در 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 تمرین دیگر را باز کنید