سورس ویژه پخش فیلم و سریال با درگاه زرین پال

آموزش کاتلین : Extension Functions

فروردین 27, 1399| سنا عبادی
آموزش کاتلین Extension Functions | وبلاگ مارکت اندروید ریور

در این مقاله از آموزش کاتلین (kotlin) قرار هست با یک آپشن جذاب و پرکاربرد کاتلین آشنا شوید . برای شناخت بیشتراین ویژگی یک لیوان قهوه داغ آماده کنید و یک تکه کیک شکلاتی (هرچه بیشتر باشه بهتره 😉 ) بردارید و تا آخر این مقاله با من همراه باشید .

خب وقتی اسم از توسعه و یا گسترش یک کلاس برای استفاده از قابلیت هایش وسط میاید اولین چیزی که به ذهن شمای برنامه نویس میرسد استفادع از خاصیت ارث بری شی گرایی هست که کاملا درست هست . شما کلاسی را از کلاس دیگری ارث بری میکنید و از قابلیت هایش به طور کامل استفاده میکنید ولی خب در کاتلین ما روشی داریم که ما رو بی نیاز از ارث بری یا دستکاری آن کلاس برای گسترش آن کلاس کرده است . علاوه بر آن کد خواناتر خواهد بود. ولی چگونه ؟ْ!

بله خاصیت Extension Functions در کاتلین ! تعریف دیگری که میتوانیم برای این ویژگی کاتلین داشته باشیم ; به تابعی اطلاق میشود که عضو یک کلاس هست ولی داخل اون کلاس تعریف نشده است، بلکه خارج از آن کلاس تعریف شده و قرار دارد !

همچنین بخوانید :  معرفی پلاگین ADB WiFi Connect

در ادامه با یک مثال موضوع را روشن میکنم.

آموزش Extension Functions در کاتلین

فرض کنید که قرار هست متدی داشته باشید که آخرین کاراکتر یک رشته (String) رو دردریافت و عملیات خاصی را بر روی آن انجام دهد پس :

fun String.lastChar(): Char = this.get(this.length - 1)

خب همانظور که واضح هست اول کلمه کلیدی fun را مینویسیم و بعد باید کلاسی که قرار هست از آن استفاده کنیم که در اینجا String هست رو صدا میزنیم و در ادامه بعد از قرار دادن یک نقطه (.) اسم دلخواهی برای متد خود مینویسم . بعد از آن خیلی راحت با فراخوانی متد lastChar در هرجای کلاس میتوانید از آن استفاده کنید !

اگر قرار باشد که خیلی دقیق به اجزا این متد نگاه کنیم باید به این تصویر توجه کنید ! اجزای فاکشن را خواهید دید .

اگر قرار باشه کد بالا رو بدون this که نشانگر به متغیر اضافه شده به فانکشن هست باز نویسی کنید یعنی  Receiver object بدون this هم نوشته میشوند که کد شما به این صورت خواهد بود :

fun String.lastChar(): Char = get(length - 1)

این نوع فانکشن ها به صورتی هستند که انگار شما آنها را در همان کلاس تعریف کردید چون شما می توانید به طور مستقیم به تمامی ویژگی و متغیر و متدهای کلاسی که توسعه دادید دست پیدا کنید . 

همچنین بخوانید :  اضافه کردن کتابخانه به پروژه در اندروید استدیو

نکته ی مهمی که وجود دارد این هست که با اینکه مکانیزم این فانکشن مثل فانکشن های همان کلاس هست ولی نمیتوانید به توابع و متغیر هایprivate و protected آن کلاس دسترسی پیدا کنید .

نکته آخری که لازم دانستم یادآوری کنم داستان ایمپورت کردن این فانکشن برای استفاده از آن است که به این صورت انجام میشود :

import strings.*
یا
import strings.lastChar
یا
import strings.lastChar as last

خب به نظراین نکات برای این مقاله کافی باشد . در ادامه حتما با کاتلین بیشتر کار خواهیم داشت و مقالات مربوط کاتلین را در وبلاگ اندروید ریور خواهیم داشت .

سنا عبادی نویسنده مقاله

توسعه دهنده موبایل به ویژه سیستم عامل اندروید ، هم بنیانگذار اندروید ریور و در تلاش برای تحقق یک رویا..



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

مقالات مرتبط را بخوانید :


سورس های اندروید شامل تخفیف رو ببین !

به این مقاله امتیاز دهید :
5/5 (2 Reviews)
  خرید سورس های حرفه ای بازی و اپلیکیشن اندروید

  تخفیف ها و اخبار ویژه رو در تلگراممون دنبال کن :)

دسته‌ها: آموزش برنامه نویسی اندروید

دیدگاهتان را بنویسید

راهنما : برای نوشتن موارد مختلف در دیدگاه می توانید از راهنمای نگارش اندروید ریور استفاده کنید : نگارش کد کوتاه `your code`
نگارش کد بلند یا نگارش بخش عمده یک سورس کد :
[sourcecode lang="your code language"] your code here [/sourcecode]