Android-FAQ icon indicating copy to clipboard operation
Android-FAQ copied to clipboard

kotlin extension functions و معادل آن ها در جاوا

Open narjesmansoori opened this issue 4 years ago • 2 comments

narjesmansoori avatar Mar 06 '21 11:03 narjesmansoori

جاوا بصورت پیشفرض همچین ویژگی ای رو نداره، ولی با استفاده از کتابخونه Lombok و انوتیشن @ExtensionMethod، میشه این امکان رو پیاده سازی کرد.

برای مطالعه بیشتر، این لینک مستندات رسمی خود کتابخونست.

arenshaee avatar Mar 06 '21 20:03 arenshaee

آموزش گسترش توابع در کاتلین (kotlin extension function):

گاهی در هنگام برنامه‌نویسی به یک تابع یا قابلیت خاصی از یک کلاس نیاز پیدا می‌کنید که ممکن است در آن کلاس وجود نداشته باشد. این کلاس می‌تواند یکی از کلاس‌هایی باشد که توسط خود زبان ارائه می‌شود. برای اضافه کردن آن قابلیت در کلاس چه کاری انجام می‌دهید؟

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

در این مقاله در مورد یکی دیگر از ویژگی‌های جدید زبان kotlin به نام “Extension” صحبت خواهیم. با استفاده از گسترش توابع در کاتلین قادر خواهیم بود توابع و قابلیت‌های دلخواهمان را به کلاس مورد نظر حتی بدون وراثت و یا اصلاح آنها اضافه و یا حذف کنیم.

extension function:

همان‌طور که گفتیم برای افزودن یک تابع (function) یا قابلیت‌های یکی از کلاس‌های ارائه شده توسط زبان کاتلین مانند String و List و Toast و … می‌توانیم از ویژگی Extension در این زبان استفاده کنیم. به تابعی که به کلاس موجود اضافه می‌شود و توسط آن ویژگی جدید به آن کلاس اضافه می‌شود، تابع گسترش (extension function) می‌گویند. و کلاس مرجعی که تابع گسترش به آن اضافه شده است Receiver Type نامیده می‌شود.

مرجع کامل: https://7learn.com/blog/kotlin-extension-function

MohsenNooriArdestani avatar May 14 '22 05:05 MohsenNooriArdestani