ویژگی های خاص زبان برنامه نویسی کاتلین
با سلام خدمت همه همراهان مجله رادیب، بعد از سال 2017 زبان کاتلین (KOTLIN) به یک استاندارد در طراحی اپلیکیشن های اندرویدی تبدیل شد که کار خیلی از توسعه دهندگان را کمتر و راحت تر کرده است. به همین دلیل در این مقاله میخواهیم 5 ویژگی جالب کاتلین را بررسی کنیم که در زبان جاوا وجود ندارند.
1. پارامتر های اسم دار
یکی از مشکلاتی که موقع برنامه نویسی جاوا همیشه وجود دارد زمانی هست که یک متد اگر تعداد زیادی پارامتر ورودی داشته باشد بدون کمک داکیومنت یا 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)
در مثال کاتلین میبینید که ترتیب نوشتن پارامتر ها مهم نیست و میتونید با نوشتن اسم پارامتر ها اونهارو مقداردهی کنید.
2. کلاس های دیتا
یکی از قابلیت های جذاب و فوق العاده کاتلین Data Class ها هستند که زندگی همه برنامه نویس هارو آسون تر میکنه.با استفاده از Data Class ها دیگه نیازی که برای فیلد های کلاس خودتون متد های سازنده و getter, setter تعریف کنید این کار و کاتلین با یک خط کد دقیقا انجام میدهد.
data class Person(val name: String, val age: Int)
کامپایلر بصورت خودکار پارامتر های کلاس و از روی متد سازنده تشخیص میدهد و متد های استاندارد کلاس را بازنویسی میکند.این کار باعث صرفه جویی در زمان و ساده تر شدن کلاس ها می شود.
3. کد های امن تر
اگر با زبان جاوا کار کرده باشید میدونید که بیشترین خطایی که با اون برخورد میکنید خطای null pointer هست که به یک فضای خالی از حافظه اشاره میکند.ویژگی بسیار عالی زبان کاتلین این هست که متغیر ها میتونن مقادیر null هم دریافت کنند و با این کار دیگه شما این پیغام خطای همیشگی و نمیبینید.البته به صورت پیشفرض متغیر ها در کاتلین مقدار null نمیپذیرن و اگر این کار و بکنید در اینجا هم پیغام خطا دریافت میکنید.همونطور که در کد زیر میبینید با گذاشتن یک علامت سوال میتونید مقادیر null را در متغیر ها ذخیره کنید.
var bundle : Bundle? = null
4. ویژگی Extension
از طریق ویژگی Extension میتونیم به کلاس هایی که کد های اون و در اختیار نداریم متد و توابع مختلف اضافه کنیم.علاوه بر اون با استفاده از قابلیتی به اسم Extension Properties میتونیم عملیات تبدیل دیتا تایپ ها به همدیگه یا همون cast کردن و بهتر انجام بدیم.روش معمولی به شکل زیر انجام می شود:
var myBigDecimal = 26 as BigDecimal var otherBigDecimal : BigDecimal = myBigDecimal
با استفاده از قابلیت Extension
val Int.bd : BigDecimal get() = BigDecimal(this)
با این کار از کلاس Int ارث بری کردیم و حالا خیلی راحت میتونیم مقادیر Int و به BigDecimal تبدیل کنیم.
5. ویژگی Smart casts
وقتی که بحث cast کردن میشه زبان کاتلین یکمی باهوش عمل میکنه.در خیلی از موارد نیاز نیست که ما خودمون عملیات cast کردن و انجام بدیم بخاطر اینکه کاتلین هنگام کامپایل شدن این کار و خود کار انجام میده.به مثال زیر توجه کنید:
fun demo(x: Any) { if (x is String) { print(x.length) // } }
دستور is در کاتلین مشابه دستور instanceof در جاوا هست.در کد بالا اگر مقدار x برابر با null نباشد به طور خودکار تبدیل به String می شود.
منبع: مجله رادیب
کسانی که این مقاله را خوانده اند مقالات زیر را هم دنبال کرده اند