خب وارد بخش پایه ای کاتلین شدیم، اولین چیزی که میخوایم در موردش صحبت کنیم اینه که چگونه متغیر ایجاد کنیم. اول بیام یک فایل کاتلین به نام 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 چه نوع تایپی رو بده و اونو بهش نسبت بده، البته این به این معنی نیستش که میتونیم وسط برنامه تایپش رو عوض کنیم.