با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که علاقمند به دوره آموزش کاتلین هستند. در جلسه گذشته با sealed class آشنا شدیم. این جلسه به آموزش Generics و آموزش جنریک در کاتلین اختصاص دارد.
کاتلین هم مانند جاوا مراتب بالایی از متغیر typing را باعنوان جنریک فراهم می کند.
در ادامه مبحث آموزش جنربک در کاتلین یاد می آموزیم که کانلین چگونه از جنریک ها استفاده می کند.
علاوه بر این خواهیم آموخت که به عنوان یک توسعه کننده چگونه از این ویژگی که در کتابخانه عمومی کاتلین موجود است استفاده نماییم.
از لحاظ نظری جنریک موجود در کاتلین بسیار شبیه به جنریک موجود در جاوا دارد.
با وجود این شباهت توسعه دهندگان کاتلین از دو کلمه کلیدی “out” و “in” استفاده می کنند تا کار با کاتلین آسان تر و خواناتر کنند.
در کاتلین کلاس (class) و (type) کاملاً با یکدیگر متفاوتند.
به عنوان مثال List یک کلاس در کاتلین است در حالی که List<String> یک type در کاتلین است.
در مثال زیر نحوه اجرای جنریک را در کاتلین می بینید.
1 2 3 4 5 | fun main(args: Array<String>) { val integer: Int = 1 val number: Number = integer print(number) } |
در کد بالا، ما یک عدد صحیح را اعلام کردیم و بعد آن متغیر را به یک متغیر اختصاص دادیم.
“Int” یک زیر کلاس از کلاس Number است، به همین تبدیل type به صورت خودکار صورت گرفته و خروجی را با عنوان “۱” تولید می نماید.
وقتی در استفاده از نوع دیتایی که می خواهیم در برنامه مد نظرمان استفاده نماییم شک داریم توصیه می شود که از جنریک دیتا استفاده نماییم.
به طور کلی جنریک های کاتلین به وسیله <T> مشخص می شود.
از “T” برای تعیین الگو استفاده می شود و کامپایلر کاتلین آن را به صورت پویا و دینامیک تعیین می کند.
در مثال زیر می توانید نحوه استفاده از انواع جنریک دیتاها را ببینید.
1 2 3 4 5 6 7 8 9 | fun main(args: Array<String>) { var objet = genericsExample<String>("JAVA") var objet1 = genericsExample<Int>(10) } class genericsExample<T>(input:T) { init { println("I am getting called with the value "+input) } } |
در قطعه کد بالا، یک کلاس با نوع جنریک برگشتی ایجاد شده که با عنوان <T> نمایش داده شده است.
به متود اصلی به کار رفته توجه کنید که به صورت پویا مقدار آن هنگام اجرای مقدار نوع و ساخت object کلاس تعیین شده است.
به این ترتیب است که جنریک ها توسط کامپایلر کاتلین نمایش داده می شوند.
هنگام اجرای کد زیر در زمینه کدگذاری، خروجی ذیل را دریافت خواهیم کرد.
1 2 | I am getting called with the value JAVA I am getting called with the value 10 |
هنگام اختصاص نوع جنریک به نوع فوق العاده super type آن، از کلمه کلیدی “out” استفاده می کنیم.
هنگام اختصاص نوع جنریک به زیر نوع sub-type آن، از کلمه کلیدی “in” استفاده می نماییم.
در مثال زیر از کلمه “out” استفاده شده است.
شما نیر می توانید کلمه کلیدی “in” را امتحان کنید.
1 2 3 4 5 6 7 8 9 10 11 | fun main(args: Array<String>) { var objet1 = genericsExample<Int>(10) var object2 = genericsExample<Double>(10.00) println(objet1) println(object2) } class genericsExample<out T>(input:T) { init { println("I am getting called with the value "+input) } } |
قطعه کد بالا خروجی زیر را در مرورگر تولید می کند.
1 2 3 4 | I am getting called with the value 10 I am getting called with the value 10.0 genericsExample@28d93b30 genericsExample@1b6d3586 |
در این جلسه، آموزش جنریک در کاتلین ارائه گردید.
در جلسه بعدی آموزش کار با Delegation در کاتلین ارائه می گردد.
با پی وی لرن همراه باشید.