مسیرها
/
C#
C#
/
تمرین‌ها
/
آب‌وهوای دیتر
آب‌وهوای دیتر

آب‌وهوای دیتر

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

مقدمه

اعضای دارای بدنه‌ی عبارتی

بسیاری از انواع اعضای struct و کلاس (که فیلدها استثنای اصلی آن هستند) می‌توانند از نحوه‌ی نگارش اعضای دارای بدنه‌ی عبارتی استفاده کنند. تعریف یک عضو با یک عبارت، اغلب کدی موجزتر و خواناتر از بلوک‌ها/دستورهای سنتی تولید می‌کند.

متدها و خاصیت‌های فقط‌خواندنی از جمله اعضایی هستند که می‌توان آن‌ها را با بدنه‌ی عبارتی تعریف کرد.

public int Times3(int input) => input * 3;

public int Interesting => 1729;

عبارت‌های switch

یک عبارت switch می‌تواند یک مقدار را با یک مورد از میان مجموعه‌ای از الگوها تطبیق دهد و مقدار متناظر را برگرداند یا اقدام متناظر را انجام دهد. این تناظر با نماد => نشان داده می‌شود. علاوه بر این، هر الگو می‌تواند یک محافظ مورد اختیاری داشته باشد که با کلیدواژه‌ی when معرفی می‌شود. عبارت محافظ مورد باید «درست» ارزیابی شود تا آن شاخه از switch انتخاب شود. موردها (که به آن‌ها شاخه‌های switch هم می‌گویند) به ترتیب متن ارزیابی می‌شوند و به محض یافتن یک تطبیق، فرایند متوقف می‌شود و مقدار متناظر برگردانده می‌شود.

double xx = 42d;

string interesting = xx switch
{
    0 => "I suppose zero is interesting",
    3.14 when DateTime.Now.Day == 14 && DateTime.Now.Month == 3 => "Mmm pie!",
    3.14 => "π",
    42 => "a bit of a cliché",
    1729 => "only if you are a pure mathematician",
    _ => "not interesting"
};

// => interesting == "a bit of a cliché"

شرط‌های سه‌تایی

عملگرهای سه‌تایی امکان می‌دهند شرط‌های if به‌جای بلوک‌های دستور، در قالب عبارت تعریف شوند. این کار با رویکردهای برنامه‌نویسی تابعی هم‌راستاست و اغلب می‌تواند کد را گویاتر و کم‌خطاتر کند.

عملگر سه‌تایی سه عبارت را با هم ترکیب می‌کند: یک شرط، به دنبال آن عبارتی که در صورت «درست» بودن شرط ارزیابی و برگردانده می‌شود (بخش if که با ? معرفی می‌شود) و عبارتی که در صورت «غلط» بودن شرط ارزیابی و برگردانده می‌شود (بخش else که با : معرفی می‌شود).

int a = 3, b = 4;
int max = a > b ? a : b;
// => 4

عبارت‌های throw

عبارت‌های throw جایگزینی برای دستورهای throw هستند و به‌ویژه می‌توانند به قدرت شرط‌های سه‌تایی و دیگر عبارت‌های ترکیبی بیفزایند.

string trimmed = str == null ? throw new ArgumentException() : str.Trim();

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

از شما خواسته شده است که کدی قدیمی مربوط به یک ایستگاه هواشناسی را بهبود دهید.

ایستگاه هواشناسی قرائت‌ها را می‌پذیرد و نشانگرهایی مانند دما و فشار را خروجی می‌دهد.

1. اختصار و خوانایی متدهای مناسب را بهبود دهید

هر یک از متدهای مناسب کلاس WeatherStation را با استفاده از «اعضای دارای بدنه‌ی عبارتی» بازآرایی کنید. در جای مناسب از «عملگرهای شرطی سه‌گانه» و «عبارات switch» استفاده کنید تا رسایی را بهبود دهید و به‌طور بالقوه خطاها را کاهش دهید.

مطمئن شوید که همه‌ی تست‌ها همچنان پاس می‌شوند.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
C# Exercism

آماده‌اید آب‌وهوای دیتر را شروع کنید؟

در Exercism ثبت‌نام کنید تا C# را همراه با 62 مفهوم178 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.