با آمزش دیگر از کدایت در خدمت شما عزیزان هستیم. افزونه نویسی (Extension Function) در کاتلین به شما امکان میدهد تا توابع جدیدی را به کلاسهای موجود اضافه کنید، بدون اینکه نیاز به ارثبری از آن کلاس یا تغییر کد آن داشته باشید. بعضی مواقع توابعی فقط در یک جا مورد استفاده میشود و تعریف کردن آن در کلاس سربار اضافی است و استفاده زیادی از آن نمیشود. در این مواقع است که ما با افزونه نویسی یک تابع برای آن در خارج از کلاس به صورت Extension Function تعریف میکنیم.
این کار میتواند برای موارد زیر مفید باشد:
- اضافه کردن توابعی که به طور مکرر با یک نوع داده خاص استفاده میشوند.
- اضافه کردن توابعی که به دلیل خصوصی بودن، در دسترس شما نیستند.
- بهبود خوانایی کد با جدا کردن توابع مربوط به یک نوع داده خاص.
مطالب مرتبط: آموزش مقدماتی کاتلین به صورت جامع و به صورت صفر تا صد
افزونه نویسی (Extension Function) چه مزایایی دارد :
- خوانایی کد را افزایش میدهد: با جدا کردن توابع مربوط به یک نوع داده خاص، کد شما خواناتر و قابل فهمتر میشود.
- قابلیت استفاده مجدد کد را افزایش میدهد: شما میتوانید توابع افزونه را در پروژههای مختلف به اشتراک بگذارید.
- نگهداری کد را آسانتر میکند: با اضافه کردن توابع جدید به کلاسهای موجود، میتوانید از ایجاد کلاسهای جدید و پیچیده جلوگیری کنید.
نکات مهم در مورد افزونه نویسی:
- توابع افزونه نمیتوانند به اعضای خصوصی کلاس دسترسی داشته باشند.
- توابع افزونه نمیتوانند توابع سازنده یا توابع ثابت را اضافه کنند.
- توابع افزونه میتوانند توابع دیگر را با استفاده از کلمه کلیدی
superفراخوانی کنند.
مطالب مرتبط : نحوه استفاده از ساختار داده TreeMap در کاتلین | درس دوازدهم | آموزش مقدماتی کاتلین
برای فهم بهتر این موضوع ما یک مثال ساده در قالب کدنویسی برای شما آماده کردیم . فرض کنید ما یک کلاس User داریم که اطلاعات کاربر اعم از نام ، نام خانوادگی ، ایمیل و شماره تماس در آن قرار دارد من در کلاس User هیچ تابع و سازنده دیگری ندارم کد کلاس User را در قسمت پایین مشاهده کنید .

کلاس User
کد های کلاس User در قسمت بالا مشاهده میکنید. حالا ما قرار است با استفاده از افزونه نویسی (Extension Function) دوتا تابع setValues , getValues در فایل Main خود تعریف کنیم و با کمک این دوتا تابع یکسری عملیات برای کلاس User انجام دهیم .

ساخت توابعی با افزونه نویسی

افزونه نویسی تابع getValues
در کد بالا ، ما با استفاده از افزونه نویسی (Extension Function) دو تابع setValues و getValues تعریف کردیم و مقدار دهی میکنیم . این دوتابع در داخل کلاس User قرار ندارد و ما بسته به نیازی که اینجا داشتیم تعریف کردیم .
خروجی کد بالا :

خروجی کد بالا
همانطور که مشاهده میکنید ما با توابعی که ساختیم کلاس User را مقداردهی کردیم و در آخر نیز خروجی را چاپ کردیم.
کد های استفاده شده در آموزش:
|
1 2 3 4 5 6 7 8 9 |
class User { lateinit var name: String lateinit var lastName: String lateinit var email: String lateinit var phone: String } |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
fun main() { val user = User() user.setValues("Ali", "faraji", "faraji.ali75@gmail.com", "0910-123-2526") user.getValues() } fun User.setValues(_name: String, _lastName: String, _email: String, _phone: String) { name = _name lastName = _lastName email = _email phone = _phone } fun User.getValues() { println("Name:$name \n LastName:$lastName \n Email:$email\n Phone:$phone") } |
مطالب پیشنهادی : آموزش جاوا اسکریپت به صورت مقدماتی تا پیشرفته
دیدگاهتان را بنویسید