فصل6_ بخش چهاردهم:(Extension functionها و infix function ها و operator over loading)
Extensionفانکشن ها منشا infix فانکشن ها است و infix فانکشن ها منشا operator over loading ها می باشد .
Extension فانکشن ها برای اضافه کردن ویژگی هایی به کلاس مان بدون ارث بری و استفاده از دیزاین پترن ها مثل دیزاین پترنDecorator (به بهترین حل مسیله در شرایط بهینه و پایدار دیزاین پترن می گویند ).
طرز نوشتن Extension فانکشن ها:
کلمه کلیدی ' fun '+فاصله+نام کلاسی که می خواهیم گسترش دهیم+نقطه+نام تابع مان
طرز نوشتن بقیه تابع Extentionمان مانند تابع معمولی است .
نکته برای صدا زدن Extenstion فانکشن مربوطه در فایل main.kt می بایست ابتدا کلاس مان را صدا بزنیم یا ابتدا از آن Object بسازیم سپس با نوشتن نام object و بلا فاصله گذاشتن یک نقطه و بلافاصله آوردن نام تابع انتخابی برایExtension فانکشن مان تابع مان صدا زده می شود .
طرز نوشتن infix فانکشن ها :
مانند نوشتن Extension فانکشن ها هست با این تفاوت که قبل از نوشتن کلمه کلیدی ' fun ' عبارت ' infix ' می آوریم جالب است بدانید با اوردن این عبارت
تنها می توانید یک پارامتر ورودی در امضای تابع تان بنویسید .
طرز نوشتن operator over loading :
مانند نوشتن infix فانکشن ها هست منتها بین دو عبارت ' fun ' و ' infix 'کلمه کلیدی ' operator ' را می آوریم . همچنین به جای نام دلخواه کلاسمان از عبارت های ' plus 'معادل '+' و 'minus' معادل '-' و ' div' معادل ' / ' و 'times' معادل ' * '
و پس از این کار ها به راحتی اعمال جمع و ضرب و تقسیم و ضرب را به راحتی روی خود object های کلاس مان به طور مستقیم انجام می دهیم(فقط روی یکی از آرگومان های object که از کلاس مان ساخته ایم اجرا خواهد شد )
به شکل های زیر بادقت توجه کنید:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''