کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش ژنریک(Generic) در Kotlin

ژنریک(Generic) در Kotlin

Kotlin نیز مانند جاوا مرتبه‌ی بالاتری از نوع بندی متغیرها را ارائه می‌کند که Generic نام دارد. در این بخش می‌خواهیم به چگونگی پیاده‌سازی Generic ها توسط Kotlin بپردازیم. همچنین به شما یاد خواهیم داد که چگونه به‌عنوان یک برنامه‌نویس از این قابلیت‌های موجود در کتابخانه‌ی Generic استفاده کنید. Generic ها از نظر پیاده‌سازی کاملاً شبیه به جاوا هستند. اما توسعه‌دهنده‌ی Kotlin دو واژه‌ی کلیدی out و in را نیز معرفی کرده است تا بتواند کدهای Kotlin را برای برنامه‌نویس خواناتر و ساده‌تر کند.
در Kotlin کلاس‌ها و نوع‌ها مفاهیم کاملاً متفاوتی هستند. به‌عنوان مثال List در Kotlin یک کلاس است. این در حالی است که List< String> یک نوع است. در مثال زیر چگونگی پیاده‌سازی Generic ها در Kotlin نشان داده شده است.


fun main(args: Array< String >) {
 val integer: Int = 1
 val number: Number = integer
 print(number)
}

در کد بالا یک عدد صحیح اعلان شده است و پس از آن ما این متغیر را به یک متغیر عددی تخصیص داده‌ایم. دلیل احتمالی این امر این است که Int زیرکلاسی از کلاس Number است. به همین دلیل در زمان اجرا به‌صورت خودکار تبدیل نوع اتفاق می‌افتد و خروجی 1 نمایش داده می‌شود. حالا بیایید در رابطه با Generic ها اطلاعات بیشتری کسب کنیم. هر زمان که در رابطه با نوع داده‌ی استفاده‌شده در برنامه مطمئن نیستید، بهتر است که از نوع داده‌ی Generic استفاده کنید. عموماً Generic ها در Kotlin توسط < T > تعریف می‌شوند که T بیانگر حرف اول template یا قالب است که خود به‌صورت پویا توسط کامپایلر Kotlin تعیین می‌شود. در مثال زیر چگونگی استفاده از نوع داده‌ی Generic در زبان برنامه‌نویسی Kotlin نشان داده شده است.

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)
 }
}

در کد بالا یک کلاس با نوع برگشتی Generic ایجاد شده است که به‌صورت نشان داده شده است. به متد main توجه کنید. ما در این متد به‌صورت پویا با اثبات نوع مقدار، مقدار آن را تعریف کرده‌ایم و در عین حال شیء این کلاس را ایجاد کرده‌ایم. به همین صورت Generic ها توسط کامپایلر Kotlin تفسیر می‌شوند. پس از اجرای این کد نتیجه‌ی زیر حاصل می‌شود.

I am getting called with the value JAVA
I am getting called with the value 10

زمانی که بخواهیم نوع Generic را به یکی از ابَرنوع های آن تخصیص دهیم، در این صورت باید از واژه‌ی کلیدی out استفاده کنیم. همچنین زمانی که بخواهیم نوع Generic را به یکی از زیرنوع های آن تخصیص دهیم در این صورت باید از واژه‌ی کلیدی in استفاده کنیم. در کد زیر از واژه‌ی کلیدی out استفاده شده است. به‌طور مشابه می‌توانید از واژه‌ی کلیدی in استفاده کنید.

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)
 }
}

نتیجه‌ی کد بالا به‌صورت زیر نمایش داده می‌شود.

I am getting called with the value 10
I am getting called with the value 10.0
genericsExample@28d93b30
genericsExample@1b6d3586

1397/09/24 2053 706
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...