Skip to content

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

Open

Description

@narjesmansoori
No description provided.

Activity

  1. arenshaee commented on Mar 6, 2021

    @arenshaee

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

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

  2. MohsenNooriArdestani commented on May 14, 2022

    @MohsenNooriArdestani

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

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

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

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

    extension function:

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions