مسیرها
/
Elm
Elm
/
تمرین‌ها
/
لازانیای لذیذ لوسین
لازانیای لذیذ لوسین

لازانیای لذیذ لوسین

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

مقدمه

مبانی ۱

مقدار ثابت و تابع

یک مقدار ثابت با name = expression تعریف می‌شود؛ در Elm هر چیزی جز تعریف‌ها یک «عبارت» است.

five = 5

six = 3 + 3

تابع‌ها با name parameters... = expression تعریف می‌شوند و «پارامتر»ها تنها با فاصله از هم جدا می‌شوند.

add number1 number2 = number1 + number2

فراخوانی کردن یک تابع هم یک عبارت است و با نوشتن اسم تابع و دادن «آرگومان» برای هر یک از پارامترهای آن انجام می‌شود؛ آرگومان‌ها هم درست مانند تعریف تابع با فاصله از هم جدا می‌شوند.

five = add 2 3

از پرانتز می‌توان برای تعیین ترتیب ارزیابی یک عبارت استفاده کرد.

six = add 2 (1 * 4)

twelve = add 2 1 * 4

تورفتگی / فاصله‌های معنادار

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

  • تعریف ماژول، import و تابع‌های سطح بالا باید از چپ‌ترین ستون شروع شوند.
  • اگر یک عبارت به چند خط تقسیم شود، کدی که بخشی از آن عبارت است باید با حداقل یک فاصله زیر آن عبارت تورفتگی داشته باشد.
  • بخش‌هایی از عبارت که با هم گروه‌بندی شده‌اند باید با تعداد فاصله‌ی برابر تورفتگی داشته باشند.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://elmprogramming.com/indentation.html

ماژول

هر فایل در Elm یک ماژول است و باید پیش از هر کد دیگری یک دستور module داشته باشد. اسم ماژول باید با اسم فایلش مطابقت داشته باشد، پس ماژول Calculator باید در فایل Calculator.elm باشد. هرچه داخل یک ماژول تعریف شود، به همان ماژول محدود می‌ماند و از بیرون آن قابل دسترسی نیست، مگر اینکه در exposing فهرست شده باشد.

-- Define the Calculator module, and expose the `add` function
module Calculator exposing (add)

six = 3 + 3

add number1 number2 = number1 + number2
-- Define the Calculator module, and expose everything within: `six` and `add`
module Calculator exposing (..)

six = 3 + 3

add number1 number2 = number1 + number2

https://elm-lang.org/docs/syntax#modules

کامنت

کامنت متنی است داخل فایل Elm که به‌عنوان کد تفسیر نمی‌شود. کامنت عمدتاً برای این است که خودتان و دیگر برنامه‌نویسان آن را بخوانید. برای کامنت‌های تک‌خطی یک نحوه‌ی نگارش سبک بر پایه‌ی دو خط تیره وجود دارد. کامنت‌های چندخطی هم با جفت {- و -} به‌عنوان جداکننده‌های آغاز و پایان امکان‌پذیر است.

-- a single line comment
-- another single line comment

{- a multiline comment
   spawning multiple lines
-}

قالب‌بندی

یک راهنمای سبک وجود دارد و می‌توان از elm-format برای قالب‌بندی خودکار کد استفاده کرد.

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

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

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

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

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

expectedMinutesInOven
    --> 40

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

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

preparationTimeInMinutes 3
    --> 6

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

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

elapsedTimeInMinutes 3 20
    --> 26
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Elm Exercism

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

در Exercism ثبت‌نام کنید تا Elm را همراه با 28 مفهوم110 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.