در ادامه آموزش کاتلین ، به بحث Extension Function یا همون “گسترش توابع” میرسیم . فرض کنیم دو تا کلاس داریم . یه کلاس اصلی و یه کلاس دیگه به نام Alien . توی کلاس Alien ما یه متغیر داریم به نام skills ( به معنی مهارتها ) که میتونیم زبان های برنامه نویسی که بلدیم رو بهش بدیم . و توی همین کلاس Alien یه تابع show هم تعریف میکنیم که skills رو چاپ کنه . این میشه کدهای کلاس Alien : 

همونطور که میبینید ما به متغیر skills مقدار null رو دادیم ، چون میخوایم مهارت رو از طریق کلاس اصلی کدنویسی کنیم . یعنی فقط از این کلاس استفاده کنیم . حالا میایم توی کلاس اصلی خودمون که تابع main داخلش هست یه متغیر تعریف میکنیم که از نوع Alien باشه و یه مقدار که همون skills هست رو بهش میدیم و بعد هم میگیم چاپش کنه ( با استفاده از تابع show داخل کلاس Alien ) . این میشه کدهامون : 

کد بالا رو اگه اجرا کنیم اول Java رو چاپ میکنه ، بعد یه خط پایین تر ، Kotlin رو چاپ میکنه . حالا اگه بخوایم یه متغیر تعریف کنیم که a1 و a2 رو با همدیگه جمع کنه و کنار هم چاپ کنه چی ؟ خوب راه های زیادی هست . مثلا توی کلاس Alien میتونیم یه تابع به نام plus تعریف کنیم که اونجا a1 و a2 رو بگیره و کنار هم چاپ کنه و توی کلاس اصلیمون تابع plus رو فراخوانی کنیم . ولی میخوایم توی همین کلاس اصلیمون تابع plus رو تعریف کنیم و بگیم که از نوع Alien باشه ( میدونم شاید یه کم گیج کننده باشه ولی دختری که دم و دقیقه عکس پروفایلش رو عوض میکنه هم گیج کننده هست ! ) . بذارید اینجوری بگم . ما میخوایم توی کلاس اصلیمون یه تابع تعریف کنیم که از نوع یه کلاس دیگه باشه . به این کار میگن گسترش توابع . ما میخوایم یه تابع به نام plus تعریف کنیم کـــــــه مهارت اول که Java بود رو به علاوه مهارت دوم که Kotlin بود رو کنار هم چاپ کنه و واسه این تابع از کدهای یه کلاس دیگه که Alien باشه استفاده میکنیم . میایم توی کلاس اصلیمون ( و خارج از تابع main ) تابع plus رو تعریف میکنیم : 

در توضیح کدهای بالا : توی خط اول قبل از اینکه اسم تابع رو بنویسیم میگیم که از نوع کلاس Alien هست . و یه متغیر جدید به نام newAlien تعریف میکنیم که جمع اون دو تا رو توش ذخیره میکنیم و طبیعتا از نوع Alien هست . اگه دقت کنید ما توی خط اول واسه تابع plus فقط یه ورودی تعریف کردیم به اسم a . ولی ما میخوایم که تابع plus دو تا مقدار رو با هم ترکیب کنه . اینجاست که از کلمه کلیدی this استفاده میکنیم ( در اصل هر جا که بحث Extension Function یا همون گسترش توابع مطرح باشه ، this هم اونجا وجودش لازم هست ) . ما از this استفاده میکنیم واسه مهارت اول و از a هم استفاده میکنیم واسه مهارت دوم . و در آخر هم میگیم مقدار newAlien که ترکیب دو تا مهارت هست رو return کنه . حالا میتونیم از تابع plus استفاده کنیم و یه مقدار a3 رو چاپ کنیم . این میشه کل کدهای کلاس اصلیمون : 

خوب اینم از بحث گسترش توابع در کاتلین . خداوند همه ما را از گیجی نجات دهد ! 

آموزش Extension Function در کاتلین

مجتبی صابری


همه عشقم برنامه نویسی هست | t.me/kotlin9


پیمایش نوشته


3 دیدگاه در “آموزش Extension Function در کاتلین

  1. سلام خدمت اقا مجتبی گل میخواستم بدونم اون علامت ؟ که بعضی مواقع بعد تابع ها نوشته میشه چه کاری انجام میشه ایا برای null برگرداندن استفاده میشه یا چیزی دیگر. یاحق

    1. سلام آقا جلال عزیز . اون علامت سوال واسه مدیریت خطای null استفاده میشه . یعنی فرض کن یه مقدار a داریم که چیزی توش نیست و برابر با null قرارش دادیم . حالا اگه یه جا بگیم اندازه یا همون length a رو چاپ کن خطا میده که با گذاشتن علامت سوال توی تابع ، جلوی ارور گرفته میشه و اجازه نمیده کل برنامه از کار بیفته . در اصل بهش میگن Null Safety

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *