Operator Overloading یا اضافه بارگذاری عملگر، قابلیتی در زبان کاتلین است که به شما اجازه میدهد. تا رفتار عملگرهای موجود را برای کلاسها و نوعهای دادهی خودتان تغییر دهید. به عبارت دیگر، میتوانید با استفاده از این قابلیت، معنای جدیدی به عملگرهای رایج مانند +، -، * و == برای کلاسهای خودتان اختصاص دهید. ما در جلسه قبل مبحث توابع میانوندی (Infix Functions) در کاتلین برای شما عزیزان آموزش دادیم Operator Overloading یا اضافه بارگذاری عملگر شبیه Infix Functions ها هستند. و باعث کوتاه شدن کد ها می شوند . اضافه بارگذاری عملگر ها در زبان برنامه نویسی C وجود داشت و الان نیز در زبان برنامه نویسی کاتلین نیز استفاده میکنند.
مطالب مرتبط :آموزش افزونه نویسی (Extension Function) در کاتلین | آموزش مقدماتی کاتلین | درس 14 ام
فرض کنید ما میخواهیم یکسری عملیات های ریاضی انجام دهیم ، در واقع ما با کمک Operator Overloading این عملیات ها را با علامت های ریاضی کنترل میکنیم به طور مثال :
توضیحات کد بالا :
متد operator fun String.plus دو وردی از جنس String دریافت میکند . یکی this و دیگری هم other میباشد و یک مقدار برگشتی از جنس String و از جمع این دوتا رشته برای ما برمیگرداند .
مثالی از جمع دو عدد صحیح:
توضیحات کد بالا :
در کد بالا همانطور که مشاهده میکنید ما یک data کلاس داریم به اسم IntPair که این کلاس دوتا ورودی یا همان ویژگی با نام های first و second دریافت میکند. که هر دو ویژگی از جنس عدد صحیح یا Int میباشند.
و اما متد operator fun IntPair.plus(other: IntPair): IntPair این متد عملگر + یا جمع را برای کلاس ما Operator Overloading یا اضافه بارگذاری عملگر میکند و همانطور که مشاهده میکنید دو تا شی از جنس data class موجود (IntPair) به عنوان ورودی دریافت میکند . this که اشاره به شی کنونی میباشد و other نیز اشاره به شی دیگری دارد . در واقع ما دوتا شی با مقادیر ورودی first و second را به عنوان ورودی به متد خود میدهیم و یک مقدار برگشی از جنس خود کلاس یعنی IntPair دریافت میکنیم که مقادیر آن جمع دو تا شی ما است.
خروجی کد:
نکته ای که از مثال بالا باید دریافت کنیم این است که در این مثال، Operator Overloading به ما این امکان میدهد تا عمل جمع را برای کلاس IntPair
پیادهسازی کنیم. به این ترتیب، میتوانیم از عملگر +
برای جمع کردن دو شیء IntPair
به طور مستقیم استفاده کنیم.
مطالب پیشنهادی : نحوی مدیریت استثناها با try-catch در کاتلین | آموزش مقدماتی کاتلین | درس سیزدهم
مزایای استفاده از Operator Overloading:
- خوانایی کد: با استفاده از Operator Overloading میتوانید کد خود را خواناتر و قابل فهمتر کنید. به عنوان مثال، به جای استفاده از متدهای جداگانه برای جمع و تفریق دو عدد مختلط، میتوانید از عملگرهای
+
و-
به طور مستقیم استفاده کنید. - کاهش حجم کد: اضافه بارگذاری عملگر میتواند به شما کمک کند تا کد خود را کوتاهتر و فشردهتر کنید.
- سازگاری با API های موجود: با استفاده از Operator Overloading میتوانید کلاسهای خودتان را با API های موجود که از عملگرهای خاصی استفاده میکنند، سازگار کنید.
برای مشاهده موارد بیشتر و استفاده های گوناگون از این Operator ها میتوانید به سایت کاتلین در لینک زیر مراجعه کنید که همه عملگر ها برای Overloading را به طور مفصل برای شما آورده است .
منابع : kotlinlang
دیدگاهتان را بنویسید