اسکوپ فانکشن (Scope functions) یا توابع دامنه در کاتلین چیست ؟

اسکوپ فانکشن (Scope functions) یا توابع دامنه باعث ساده شدن کد های ما برای نوشتن یک پروژه و همچنین برای اینکه کد های ما تمیز باشند استفاده می شود و همچنین یکی از کاربرد های مهم آن این است که به وسیله اسکوپ فانکشن (Scope functions)  می توانیم . یک کار تیمی بزرگی را انجام بدهیم .

اسکوپ فانکشن (Scope functions) چیه؟

واما سوال مهم تر این است که Scope functions یا توابع دامنه چی هستن؟ توابعی در کتابخانه های استاندارد کاتلین وجود دارد که هدف اول و آخر آنها اجرای یک بلوک کد در چارجوب یک شی است . و هنگامی که ما چنین توابعی را بر روی شی با بیان لامبدا ارائه شده فراخوانی می کنیم . یک دامنه موقتی تشکیل می شود که در این محدوده می توانید بدون نام آن به شی دسترسی داشته باشید.  به صورت خلاصه بگم بهتون برای شی ما یک قمرو ایجاد می کند.

شاید برای شما یکم گیچ کننده باشد ولی اصلا نگران نباشین چون با مشاهده مثال های که برای شما میزنیم کاملا آنها را متوجه خواهید شد . ابتدا بزارید یک مثال ساده  بزنم براتون تا متوجه بشید که  چرا باید از اسکوپ فانکشن(Scope functions) ها   استفاده بکنیم و روش های دیگر را کنار بگذاریم.

  فرض کنید ما یک کلاس تو کاتلین داریم . اون کلاس مقادیری نظیر نام و نام خانوادگی و سن را از مخاطبین خودش می گیرد .

 احتمال دارد   یک مقدار مثل سن را گرفته باشیم  . ولی قصد داریم دو مقدار بعدی را در طول برنامه از کاربران خود دریافت کنیم . حالا ما برای اینکه این اطلاعات را کاربران  در طول برنامه وارد کنند .  دوتا راه داریم . یک راه این است که ما باید یک شی از کلاس بسازیم . برای نام و نام خانوادگی که یک خاصیت هستند . هر دفعه  با استفاده شی کلاسمون مقدار آن ها را اضافه کنیم.

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

 

توابع دامنه یا اسکوپ فانکشن  چند حالت دارد.؟

این را برای شما بگویم که اسکوپ فانکشن (Scope functions) یا توابع دامنه  5 حالت می باشد که ما همه آنها را برای شما توضیح می دهیم . کاربرد آن هارا نیز برای شما بیان می کنیم .این 5تا عبارتند از let , run , with , apply , also می باشد . که دونه دونه برای شما توضیح می دهیم .

5 دستور scope function در کاتلین

دستورات scope functions در کاتلین

دستور Let در اسکوپ فانکشن (Scope functions) یا توابع دامنه

ابتدا اندروید استودیو را باز کنید . و یک پروژه دلخواه به نام “kotlinme”  در اندروید استودیو درست کنید .  در هنگام درست کردن این پروژه یک اکتیویتی نیز  به اسم MainActivity درست می شود .

اسکوپ فانکشن (Scope functions) و ایجاد پروژه جدید در اندروید استودیو به نام mykotlin در کاتلین

پروژه جدید در اندروید استودیو در برنامه نویسی کاتلین

و بعد از آن یک کلاس به نام Data درست کنید . مانند تصویر زیر :

ایجاد کلاس Data در اندروید استودیو در برنامه نویسی کاتلین

ایجاد کلاس Data در اندروید استودیو در برنامه نویسی کاتلین

حالا کد های زیر را در DataClass  بنویسید . ما می خواهیم برای شما نشان دهیم که چگونه از داخل MainActivity به این داده ها توسط Scope functions یا توابع دامنه ها  دسترسی پیدا می کنیم و می توانیم آن ها به راحتی تغیر  دهیم .

کد های بالا در داخل کلاس Data قرار دارد حالا ما می خواهیم به وسیله دستور Let به آن دسترسی پیدا کنیم و تغییر بدیم و یا هر کاری که می خواهید انجام بدهید  .

کد های زیر برای لایه  activity ما هستند . صفحه ی که ساخته ایم تا این مبحث را بهتر درک کنید .

 

همانطور که در قسمت پایین مشاهده می کنید . من به وسیله دستور Let   به کلاس Data دسترسی پیدا کردم. ما در داخل براکت Let به وسیله اشاره گر it   که به مقادیر داخل کلاس Data  اشاره دارد. و ما به وسیله اشاره it میتوانیم آن ها را تغیر بدهیم و یا اگر مقادیری دارند. از آن ها استفاده کنیم . و هم چنین یکی دیگر از کاربرد های let این است که آخرین مقدار را برای ما بر می گرداند.

 

خروجی کد بالا نام ونام خانوادگی و سن کاربر هست که ما چاپ می کنیم و شما هم می توانید با انجام دادن کار هایی که به شما گفتم نحوی کار اسکوپ فانکشن ها رو مشاهده کنید.

 

دستور also در Scope functions یا توابع دامنه

این دستور هم مانند دستور Let کار خود را انجام می دهد . و اما تفاوت های آن این است که Let آخرین دستور را برای ما برمی گرداند. ولی also اخرین شی را برمی گرداند . مثال پایین نمونه استفاده از also و اینکه ما می توانیم در یک اسکوپ فانکشن از دستور دیگرش هم استفاده بکنیم.

 

دستور apply در اسکوپ فانکشن (Scope functions) یا توابع دامنه

من در این دستور یک استفاده متفاوت از Scope functions یا توابع دامنه را برای شما آورده ایم . آن هم Intent ها هست . و از استفاده های دیگر که می توانیم  ما با این دستور  انجام بدهیم. ضمن این که ما در این دستور از this استفاده می کنیم . و همچنین توجه داشته باشید که مانند دستور also خود شی را برای ما برمی گرداند و همچنین  شما می توانید در داخل دستور های Scope functions یا توابع دامنه دستور های دیگر رو هم استفاده کنیم .

کد پایین هم از استفاده های apply در Intent هست . که دیگر نیاز نیست ما از inten  در put کردن استفاده بکنیم . می توانیم یک قلمره ایجاد کنیم و کارهای خود را در آن انجام دهیم .

 

دستور run در اسکوپ فانکشن (Scope functions) یا توابع دامنه

ببین این دستور هایی که من خدمت شما عزیزان آموزش می دهم . تفاوت های اندکی باهم دارند . که آنها هم با کمی دقت متوجه می شوید.  run نکته مابین  دستور let , و apply یعنی دستور run   مانند دستور apply نیازی به it ندارد و همچنین مانند دستور let اخرین مقدار را برای ما بر می گرداند  .یعنی اینکه ما دیگر مستقیم به خود داده دسترسی داریم . کد های زیر را مشاهده کنید تا بهتر حرف های من را درک کنید .

همانطور که در کد بالا میبینید ما دیگه از اشاره گر it استفاده نکردیم و مستقیما به مقادیر دسترسی داریم. برای مشاهده نتیجه کد بالا را جایگزین کد های مربوط به let در MainActivity  کنید .

 

دستور with در اسکوپ فانکشن یا توابع دامنه

ما در کد بالا هم  this رو داریم یعنی به کل داده های کلاسData دسترسی داریم . یه جور آسون تر برای شما بگم اینجوری بفهمید که مثل اینکه دارید داخل کلاس UserData کدنویسی می کنید .

مثال هایی که برای شما از این دستورات زدم. خیلی شبیه به هم هستند و اندکی با هم تفاوت دارند و همه ی این ها یک کار خاص را انجام می دهند.

جمع بندی مطالب اسکوپ فانکشن Scope functions

ما در این آموزش فهمیدیم که Scope functions  در زبان برنامه نویسی کاتلین چی هستن و به ما کمک می کنن که یک کدنویسی تمیز داشته باشیم . و همچنین بتونیم تو پروژه های بزرگ یک کار تیمی انجام دهیم و نکته مهم تر این که کد های ما را مختصر تر می کند . بعد برای شما 5 تا حالت  توابع دامنه را توضیح دادیم و برای هر کدام مثال هایی را آوردیم .

سکوپ فانکشن ها چند حالت دارند

حالت های مختلف Scope Function در کاتلین

 

ولی بزارید گفته های خودم را به صورت خلاصه برای شما بیان کنم  دستور let از اشاره گر it  استفاده می کند . یعنی انگار ما یک شی از کلاس خود ساخته ایم و به تمام متد های داخل آن کلاس توسط it  دسترسی داریم . و اینکه ما به کمک دستور let میتونیم اخرین دستور ویا همان اخرین مقدار را برگردانیم . اما دستور also که شباهت زیادی با دستور let دارد  چون آن نیز دارای کلمه it هست . تفاوت آن فقط و فقط این است که let آخرین دستور را برای ما بر می گرداند ولی also آخرین شی را بر می گرداند.

دستور بعدی apply  هست ما در این دستور کلمه this را داریم ومقدار برگشتی برای ما خود شی می باشد . دستور بعدی  run هست و این دستور نقطه وسط let , apply هست . چون مانند دستور apply دارای کلمه this  است و از یه طرف هم مقدار برای ما بر می گردونه و از این راه هم شبیه let هست . دستور آخر هم with هست که دارای کلمه this می باشد .  امیدوارم آموزش اسکوپ فانکشن از ادامه  آموزش کاتلین  برای شما عزیزان مفید باشد .

موفق باشید.

 

برای امتیاز به این نوشته کلیک کنید!
[کل: 1 میانگین: 5]
اشتراک‌گذاری

من فرشید حبیبی هستم، یک برنامه نویس موبایل با بیش از 5 سال تجربه. من علاقه زیادی به برنامه نویسی دارم و در این زمینه به طور مداوم در حال یادگیری و پیشرفت هستم. در حال حاضر، به عنوان یک برنامه نویس اندروید در یک شرکت معتبر مشغول به کار هستم و همچنین یک وبسایت آموزشی به نام کدایت را اداره می کنم. در کدایت، به تولید محتوای آموزشی در مورد برنامه نویسی اندروید و وب می پردازیم. هدف من از ایجاد این وبسایت، کمک به سایر برنامه نویسان اندرویدی برای یادگیری و پیشرفت در این زمینه است.

دیدگاهتان را بنویسید

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