با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که علاقمند به دوره آموزش کاتلین هستند. در جلسه گذشته به آموزش کنترل دید و ویرایشگرهای کاتلین پرداختیم. این جلسه آموزشی به آموزش کار با افزونه ها در کاتلین اختصاص دارد.
در ادامه جلسه آموزشی کار با افزونه ها در کاتلین قرار است با افزونه ها یا “Extension” که مبحث جدیدی در زبان کاتلین است آشنا شویم.
یادگیری افزونه ها در کاتلین ما را قادر می سازد که بدون نیاز به inheriting و یا ویرایش آن ها، به حذف یا اضافه کردن روشهای تابع مانند بپردازیم.
افزونه ها به صورت استاتیک می باشند.
افزونه ها هیچ گاه کلاس فعلی را اصلاح نمی کنند اما یک تابع ایجاد می کنند که توسط عملیات dot یا dot operation قابل نام گذاری است.
در افزونه تابع، کاتلین اجازه می دهد تا یک روش را خارج از کلاس اصلی تعریف کنیم.
در مثال زیر می بینید که چگونه یک افزونه در سطحی تابع گونه اجرا می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class Alien { var skills : String = "null" fun printMySkills() { print(skills) } } fun main(args: Array<String>) { var a1 = Alien() a1.skills = "JAVA" //a1.printMySkills() var a2 = Alien() a2.skills = "SQL" //a2.printMySkills() var a3 = Alien() a3.skills = a1.addMySkills(a2) a3.printMySkills() } fun Alien.addMySkills(a:Alien):String{ var a4 = Alien() a4.skills = this.skills + " " +a.skills return a4.skills } |
در مثال بالا هیچ متودی درون کلاس “Alien” با عنوان “()addMySkills” وجود ندارد.
با این وجود می توانیم متود مشابهی را در جایی دیگر، خارج از کلاس مورد نظر اعمال کنیم و این جادوی استفاده از افزونه ها است.
قطعه کد بالا خروجی زیر را در مرورگر تولید می کند.
1 | JAVA SQL |
کاتلین قابلیت دیگری نیز برای پیاده سازی قابلیت های جاوا دارد.
این قابلیت به کمک کلمه کلیدی “companion object” قابل دستیابی است.
با استفاده از این مکانیزم، می توان یک object از یک کلاس در داخل یک factory method ایجاد کرد.
سپس با استفاده از مرجع نام کلاس، آن متود را نام گذاری نمود.
در مثال زیر یک “companion object” ایجاد شده است.
1 2 3 4 5 6 7 8 9 10 | fun main(args: Array<String>) { println("Heyyy!!!"+A.show()) } class A { companion object { fun show():String { return("You are learning Kotlin from TutorialsPoint.com") } } } |
قطعه کد بالا خروجی زیر را در مرورگر تولید می کند.
1 | Heyyy!!! You are learning Kotlin from TutorialsPoint.com |
مثال بالا شباهت زیادی به استاتیک در جاوا دارد گرچه در real -time یک object به عنوان یک متغیر عضو از آن کلاس ایجاد می گردد.
به همین دلیل تحت مالکیت افزونه گنجانده می شود و می توان آن را با عنوان object extension نام گذاری کرد.
با این کار شما می توانید object یک کلاس مشابه را گسترش بدهید.
علاوه بر گسترش object، می توانید بعضی از اعضای توابع آن را نیز مورد استفاده قرار دهید.
در آموزش کار با افزونه ها در کاتلین با افزونه ها و دو نوع از کاربردی ترین افزون ها در کاتلین آشنا شدید.
در جلسه بعد به آموزش کار با Data Classes خواهیم پرداخت.
با پی وی لرن همراه باشید.