فهرست
1 - مقدمه
2 - مبانی کاتلین
3 - کد نویسی مقدماتی کاتلین
3.4 ) عبارت های شرطی در کاتلین
3.5 ) اضافه کردن پگیج ها در کاتلین و خلاصه بخض سوم
4 - توابع
4.2 ) تابع با پارامترهای پیشفرض و نامیده شده
4.3 ) تابع با پرامترهای نامحدود و خلاصه بخش چهارم
5 - کلاس ها
5.3 ) visibility modifier ها در کاتلین
5.6 ) Object ها در کاتلین و خلاصه بخش پنج
6 - ارث بری
6.2 ) کارکردن با کلاس های abstract در کاتلین
6.3 ) کلاس های interface در کاتلین
6.4 ) نگاه کوتاه به generic ها و خلاصه بخش شش
7 - کارکردن با Null ها
7.1 ) null safety و خلاصه بخش هفت
8 - نکات اضافه
8.4 ) کار کردن با exception ها
8.6 ) annotation ها در کاتلین و خلاصه بخش هشت
9 - نگاه functionalای
9.2 ) عبارت های لاندا در کاتلین
9.4 ) عبارت های الحاقی در کاتلین و خلاصه بخش نهم
10 - قابلیت همکاری و Interoperability
10.2 ) صحبت کردن با جاوا از کاتلین
10.3 ) کار کردن با null ها از جاوا
10.4 ) صحبت کردن با کاتلین از جاوا
10.5 ) توابع و خصیصه های درجه اول
10.6 ) توابع الحاقی کاتلین از جاوا
10.7 ) همکاری با جاوا 7 و 8 و خلاصه بخش دهم
11 - کتابخانه استاندارد
11.1 ) کتابخانه استاندارد کاتلین و کارکردن با کالکشن ها در کاتلین
11.2 ) مرور کوتاه بر روی filtering و mapping و flatmapping در کاتلین
تعریف متغیر در کاتلین
خب وارد بخش پایه ای کاتلین شدیم، اولین چیزی که میخوایم در موردش صحبت کنیم اینه که چگونه متغیر ایجاد کنیم. اول بیام یک فایل کاتلین به نام Variables توی پروژمون بسازیم.
همینطور که میبینین به خاطر ساختر پکیجم اون بالا چه طور نوشته شده. بیاین main
رو باز کنیم.
fun main(args: Array<String>) {
}
همینطور که میبینید args در واقع نام متغیر و تایپ و اون هم از جنس Array هستش و این هم یک generic type هستش که بعدا در موردش صحبت میکنیم ولی مهمترین قسمتش سینتکس کد هستش، نام متغیر ، دونقطه و تایپ اون متغیر. حالا بیاین و یک متغیر داخل main بنویسیسم
var streetNumber: Int
اگه دقت کنید IntelliJ میاد و streetNumber رو خاکستری میکنه و اینم تنها به این دلیله که ازش استفاده نشده و فعلا چیز مهمی نیست. میتونم بیام و یک متغیر دیگه بنویسم:
var streetName : String = "High Street"
کاتلین در واقع اجازه میده که من متغیر رو همون اول که تعریف میکنم مقدار دهی بکنم، به عنوان مثال مقادار High Street
رو به متغییر streetName
دادم. یک چیز دیگه که لازمه بهش توجه کنید اینه که ما از کلیدواژه var
استفاده کردیم، درواقع این کلیدواژه میگه که ایا این متغیر یک متغییر Immutable هست یا نه، به این معنی که میتونیم مقدار جدید بهش بدیم یا نه، درواقع یک کلید واژه دیگه هم هست به نام val
که مثل var
هست ولی با یک تفاوت، val یک متغییر رو Immutable میکنه و var یک متغییر رو mutable، به این معنی که میتونیم مقدار جدید به یک متغییر var بدیم ولی به val نه .
مثلا مینویسیم
val zip = "E11 P1"
streetName = "Pudding Lane"
zip = "SW1 ES2"
میبینیم که در خطی که داریم مقدار جدیدی به zip ارور داریم و اگه موس رو روی اون خط نگه داریم متوجه میشیم که IntelliJ میگه که نمیتونیم به متغیر val مقدار جدید بدیم. پس var به این معنی است که من دارم یک متغییر میسازم که اسیب پذیره یعنی میتونه مقدار جدید بگیره و زمانی که val مینویسیم به این معنیه که من دارم یک متغیر غیر آسیب پذیر تولید میکنم، یعنی نمیتونیم مقدار جدید بهشون بدیم. اگه حالا با Java اشنا باشین val انگار همون متغییریه که اولش final داشت.
یک نکته دیگه هم بگم، ما در واقع نیازی نداریم که تایپ متغیر رو ذکر کنیم، یعنی میتونیم بنویسیم
var streetName = "High Street"
و خود کامپایلر میفهمه که با streetName چه نوع تایپی رو بده و اونو بهش نسبت بده، البته این به این معنی نیستش که میتونیم وسط برنامه تایپش رو عوض کنیم.