توابع در زبان Dart – راهنمای مقدماتی


تابع به بلوکی از کد گفته میشود که سازماندهی یافته است، وظیفه منفردی را اجرا میکند و باید با کلاسی که در آن قرار دارد مرتبط باشد. توابع میتوانند قابلیت استفاده مجدد داشته باشند، این کار در صورت اجرای صحیح موجب کاهش کمیت و افزایش کیفیت کد میشود. در این مقاله به بررسی توابع در زبان Dart میپردازیم.
ساختار توابع در زبان Dart
انواع بسیار مختلفی از توابع در زبان Dart وجود دارند. در این مقاله قصد داریم ابتدا با طرز کار توابع آشنا شویم و سپس انواع آن را مورد بررسی قرار دهیم.
توابع معمولاً با ساختار زیر ایجاد میشوند:
void در کد فوق نوع بازگشتی تابع است. این بدان معنی است که زمانیکه همه کدهای درون خود را اجرا میکند، باید مقداری بازگشت دهد. اما در تابع فوق هیچ چیزی بازگشت نمییابد و صرفاً یک نام پرینت میشود. به همین دلیل است که وقتی نیاز به بازگشت چیزی نداریم باید از کلیدواژه رزرو شده void بهره بگیریم.
printName نام تابع است. این نامی است که از آن در ادامه استفاده خواهیم کرد. نام تابع باید کارکرد تابع را توصیف کند.
(String name) درون پرانتزها قرار دارد و نوع پارامتر تابع و نام آن را توصیف میکند. پارامترها متغیرهایی هستند که درون تابع تعریف میشوند. به مثال کلاسیک زیر توجه کنید:
این تابع به جمع زدن دو عدد صحیح کمک میکند. مقدار اول و مقدار دوم ارائه شدهاند و مجموع این دو عدد از سوی تابع بازگشت مییابد. میتوان از آن به صورت زیر استفاده کرد:
در کد فوق یک متغیر به نام result ایجاد کردیم که نتیجه به دست آمده از تابع sum را ذخیره میکند. در ادامه مقدار آن را که 4 است پرینت میکنیم.
به طور خلاصه میتوان عملکرد یک تابع را به دستگاه بستنیساز تشبیه کرد. ما موارد لازم (پارامترها) را به آن میدهیم و یک بستنی خوشمزه از آن پس میگیریم. به مثال زیر توجه کنید:
در این مثال پیشرفتهتر، یک تابع به نام IceCreamMachine ایجاد کردهایم که یک شیء AwesomeIceCream بازگشت میدهد. شیء وهلهای از کلاس است. به خاطر داشته باشید که AwesomeIceCream یک شیء مانند نوع داده Double ،Integer یا Strings است.
تابع Arrow
تابع Arrow تابعی است که تنها در یک خط کد نوشته میشود. شاید متوجه شده باشید که در این تابع به جای آکولاد از فلش استفاده میشود.
این شیوه موجب کوچک ماندن تابع میشود و خوانایی کد را افزایش میدهد. در ادامه مثالهای قبلی خود را به ساختار تابع arrow تبدیل میکنیم.
ابتدا از تابع sum آغاز میکنیم. در وهله نخست باید آکولادها را برداریم و فلش را اضافه کنیم. پس از علامت فلش منطق تابع را اضافه میکنیم. به همین سادگی است. ما اینک موفق شدیم نخستین تابع arrow خود را ایجاد کنیم.
اکنون شاید بپرسید چرا تابع ice cream machine را به ساختار arrow تبدیل نکردیم؟
تابع بینام
چنان که قبلاً گفتیم تابعها باید یک نام داشته باشند، اما در مورد تابع بینام چنین الزامی وجود ندارد. این نوع تابع درجا فراخوانی میشود و میتواند به صورت پارامتر به توابع دیگر ارسال شود.
نکته: کار تابع forEachFunction این است که کد درون خود را برای هر عنصر در لیست اجرا میکند.
خروجی کد فوق به صورت زیر است:
We have the chocolate flavour We have the vanilla flavour We have the orange flavor
تابع ()forEach یک پارامتر میگیرد. منظور از تابع در Dart چیزی مانند انواع دیگر است.
در مورد تابع بینام، از ساختار زیر استفاده میکنیم:
اگر همچنان سردرگم هستید، میتوانید آن را به عنوان اختصاری برای مثال زیر ببینید:
فرض کنید لیستی دارید که میخواهید با تعریف چرخه تکرار روی آن آیتمهایی را پرینت کنید، اما نمیخواهید آیتمها را در همان متدی که هم اینک قرار دارید پرینت کنید. به کدی مانند زیر نیاز داریم:
از آنجا که میخواهیم منطق را در متد دیگر خود داشته باشیم، میتوانیم یک تابع به نام ()getPrintElementFunction ایجاد کنیم:
این تابع یک تابع بازگشت میدهد. این تابع کاملاً نادر است. میتوانید از این تابع به صورت زیر درون متد forEach استفاده کنید:
این کد میتواند کامپایل شود و قرار است همان نتیجه را که در تابع قبلی دیدیم پرینت کند، اما در صورتی که میخواهید کار کوچکی درون آن انجام دهید، زشت خواهد بود.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- مجموعه آموزشهای دروس علوم و مهندسی کامپیوتر
- مفاهیم مقدماتی زبان برنامه نویسی دارت (Dart) – بخش اول
- ساخت اپلیکیشن ماشین حساب با فلاتر — از صفر تا صد
- مفاهیم شی گرایی در زبان برنامه نویسی Dart — به زبان ساده
==