از سال 2017 به بعد زبان کاتلین به یک استاندارد در طراحی اپلیکیشن های اندرویدی تبدیل شد که کار خیلی از توسعه دهندگان و کمتر و راحت تر کرده است.به همین دلیل در این مقاله میخوایم 5 تا از ویژگی های جالب کاتلین و بررسی کنیم که در زبان جاوا وجود ندارند.
یکی از مشکلاتی که موقع برنامه نویسی جاوا همیشه وجود داره زمانی هست که یک متد اگر تعداد زیادی پارامتر ورودی داشته باشه بدون کمک داکیومنت یا IDE نمیتوند ترتیب و اسم اونهارو بخاطر بسپارید.کد جاوای زیر را در نظر بگیرید.
@Override public Loader<Cursor> onCreateLoader(int i, Bundle bundle) { return new CursorLoader(this, CONTENT_URI, proj, null, null, null); }
خوشبختانه محیط برنامه نویسی اندروید قابلیتی داره که اسم پارامتر های نوشته شده را قرار میدهد.اما زبان کاتلین کار و از این هم آسون تر میکنه برای ما, به نمونه کد زیر دقت کنید.
override fun onCreateLoader(i : Int, b : Bundle): Loader<Cursor> = CursorLoader(sortOrder = null, selectionArgs = null, selection = null, context = this, uri = CONTENT_URI, projection = proj)
در مثال کاتلین میبینید که ترتیب نوشتن پارامتر ها مهم نیست و میتونید با نوشتن اسم پارامتر ها اونهارو مقداردهی کنید.
یکی از قابلیت های جذاب و فوق العاده کاتلین Data Class ها هستند که زندگی همه برنامه نویس هارو آسون تر میکنه.با استفاده از Data Class ها دیگه نیازی که برای فیلد های کلاس خودتون متد های سازنده و getter, setter تعریف کنید این کار و کاتلین با یک خط کد دقیقا انجام میدهد.
data class Person(val name: String, val age: Int)
کامپایلر بصورت خودکار پارامتر های کلاس و از روی متد سازنده تشخیص میدهد و متد های استاندارد کلاس را بازنویسی میکند.این کار باعث صرفه جویی در زمان و ساده تر شدن کلاس ها می شود.
اگر با زبان جاوا کار کرده باشید میدونید که بیشترین خطایی که با اون برخورد میکنید خطای null pointer هست که به یک فضای خالی از حافظه اشاره میکند.ویژگی بسیار عالی زبان کاتلین این هست که متغیر ها میتونن مقادیر null هم دریافت کنند و با این کار دیگه شما این پیغام خطای همیشگی و نمیبینید.البته به صورت پیشفرض متغیر ها در کاتلین مقدار null نمیپذیرن و اگر این کار و بکنید در اینجا هم پیغام خطا دریافت میکنید.همونطور که در کد زیر میبینید با گذاشتن یک علامت سوال میتونید مقادیر null را در متغیر ها ذخیره کنید.
var bundle : Bundle? = null
از طریق ویژگی Extension میتونیم به کلاس هایی که کد های اون و در اختیار نداریم متد و توابع مختلف اضافه کنیم.علاوه بر اون با استفاده از قابلیتی به اسم Extension Properties میتونیم عملیات تبدیل دیتا تایپ ها به همدیگه یا همون cast کردن و بهتر انجام بدیم.روش معمولی به شکل زیر انجام می شود:
var myBigDecimal = 26 as BigDecimal var otherBigDecimal : BigDecimal = myBigDecimal
با استفاده از قابلیت Extension
val Int.bd : BigDecimal get() = BigDecimal(this)
با این کار از کلاس Int ارث بری کردیم و حالا خیلی راحت میتونیم مقادیر Int و به BigDecimal تبدیل کنیم.
وقتی که بحث cast کردن میشه زبان کاتلین یکمی باهوش عمل میکنه.در خیلی از موارد نیاز نیست که ما خودمون عملیات cast کردن و انجام بدیم بخاطر اینکه کاتلین هنگام کامپایل شدن این کار و خود کار انجام میده.به مثال زیر توجه کنید:
fun demo(x: Any) { if (x is String) { print(x.length) // } }
دستور is در کاتلین مشابه دستور instanceof در جاوا هست.در کد بالا اگر مقدار x برابر با null نباشد تبدیل به String می شود به طور خودکار.
برنامه نویس موبایل
کارشناسی فناوری اطلاعات برنامه نویس موبایل با زبان های جاوا, کاتلین, دارت(فلاتر) CCNA,LPIC
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود