حسام رسولیان
برنامه نویس موبایل

5 ویژگی جالب زبان کاتلین برای برنامه نویسی اندروید

از سال 2017 به بعد زبان کاتلین به یک استاندارد در طراحی اپلیکیشن های اندرویدی تبدیل شد که کار خیلی از توسعه دهندگان و کمتر و راحت تر کرده است.به همین دلیل در این مقاله میخوایم  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 می شود به طور خودکار.


حسام رسولیان
حسام رسولیان

برنامه نویس موبایل

کارشناسی فناوری اطلاعات برنامه نویس موبایل با زبان های جاوا, کاتلین, دارت(فلاتر) CCNA,LPIC

نظرات