لازانیا

لازانیا

تمرین یادگیری

مقدمه

مبانی

تابع

در Gleam «توابع» با نحوه‌ی نگارش pub fn تعریف می‌شوند.

pub fn add(x: Int, y: Int) -> Int {
  x + y
}

این تابع دو آرگومان می‌گیرد که هر دو از نوع Int هستند و مقداری از نوع Int برمی‌گرداند. در Gleam کلیدواژه‌ی return وجود ندارد؛ مقدار آخرین عبارت در یک تابع همیشه به‌صورت ضمنی برگردانده می‌شود.

حاشیه‌نویسی نوع برای آرگومان‌ها و نوع بازگشتی اختیاری‌اند و Gleam همیشه کد شما را به‌طور کامل از نظر نوع بررسی می‌کند. معمولاً برنامه‌نویسان Gleam برای شفافیت به توابع خود حاشیه‌نویسی نوع می‌دهند، اما اگر بخواهید می‌توانید آن‌ها را حذف کنید.

pub fn add(x, y) {
  x + y
}

یک تابع را می‌توان با نحوه‌ی نگارش function_name(argument1, argument2) فراخوانی کرد.

pub fn double(x: Int) -> Int {
  // Call the add function defined above
  add(x, x)
}

متغیر

در Gleam «متغیرها» با نحوه‌ی نگارش let name = expression تعریف می‌شوند.

pub fn main() {
  let count = 1
}

می‌توان متغیرها را همراه با حاشیه‌نویسی نوع تعریف کرد. این‌ها مانند آرگومان‌های تابع اختیاری‌اند، هرچند بیشتر برنامه‌نویسان Gleam برای کوتاه‌نویسی حاشیه‌نویسی نوع متغیرها را حذف می‌کنند.

pub fn main() {
  let count: Int = 1
}

رشته‌ی متنی

در Gleam «رشته‌ها» با کوتیشن دوگانه نوشته می‌شوند.

pub fn greeting() {
  "Hello, world!"
}

کامنت کد

از کامنت‌ها می‌توان برای گذاشتن یادداشت برای سایر توسعه‌دهندگانی که کد منبع را می‌خوانند استفاده کرد. کامنت‌ها در Gleam تک‌خطی‌اند و با // شروع می‌شوند.

pub fn main() {
  // This is a comment
  let x = 1
}

دستورالعمل‌ها

در این تمرین می‌خواهید کدی بنویسید که به شما کمک کند از کتاب آشپزی محبوبتان یک لازانیای عالی بپزید.

شما پنج کار دارید که همه به زمان صرف‌شده برای پخت لازانیا مربوط می‌شوند.

1. زمان مورد انتظار در فر را بر حسب دقیقه تعریف کنید

تابع expected_minutes_in_oven را تعریف کنید که هیچ آرگومانی نمی‌گیرد و برمی‌گرداند که لازانیا باید چند دقیقه در فر بماند. طبق کتاب آشپزی، زمان مورد انتظار در فر بر حسب دقیقه ۴۰ است:

expected_minutes_in_oven()
// -> 40

2. زمان باقی‌مانده در فر را بر حسب دقیقه محاسبه کنید

تابع remaining_minutes_in_oven را تعریف کنید که دقیقه‌های واقعی‌ای را که لازانیا در فر بوده به عنوان آرگومان می‌گیرد و بر اساس زمان مورد انتظار در فر از کار قبلی برمی‌گرداند که لازانیا چند دقیقه دیگر باید در فر بماند.

remaining_minutes_in_oven(30)
// -> 10

3. زمان آماده‌سازی را بر حسب دقیقه محاسبه کنید

تابع preparation_time_in_minutes را تعریف کنید که تعداد لایه‌هایی را که به لازانیا اضافه کرده‌اید به عنوان آرگومان می‌گیرد و برمی‌گرداند که چند دقیقه صرف آماده‌سازی لازانیا کرده‌اید، با این فرض که آماده‌سازی هر لایه ۲ دقیقه طول می‌کشد.

preparation_time_in_minutes(2)
// -> 4

4. کل زمان کار را بر حسب دقیقه محاسبه کنید

تابع total_time_in_minutes را تعریف کنید که دو آرگومان می‌گیرد: آرگومان اول تعداد لایه‌هایی است که به لازانیا اضافه کرده‌اید و آرگومان دوم تعداد دقیقه‌هایی است که لازانیا در فر بوده است. تابع باید برگرداند که در مجموع چند دقیقه روی پخت لازانیا کار کرده‌اید، یعنی مجموع زمان آماده‌سازی بر حسب دقیقه و زمانی که لازانیا تا این لحظه در فر گذرانده است.

total_time_in_minutes(3, 10)
// -> 16

5. اعلانی بسازید که لازانیا آماده است

تابع alarm را تعریف کنید که هیچ آرگومانی نمی‌گیرد و پیامی برمی‌گرداند که نشان می‌دهد لازانیا آماده‌ی خوردن است.

alarm()
// -> "Ding!"
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Gleam Exercism

آماده‌اید لازانیا را شروع کنید؟

در Exercism ثبت‌نام کنید تا Gleam را همراه با 33 مفهوم122 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.