متغیر های تغییرپذیر و تغییرناپذیر

متغیر های تغییرپذیر و تغییرناپذیر در کاتلین

توضیحات

متغیر ها در کاتلین به دو دسته ی متغیر های تغییرپذیر و متغیر های تغییرناپذیر تقسیم میشن وقتی یک متغیر تغییر پذیر مقداردهی میشه مقدارش در طول اجرای برنامه قابل تغییره اما متغیر های تغییرناپذیر یک بار مقداردهی میشن و در طول اجرای برنامه مقداری که بهشون اختصاص دادیم غیرقابل تغییر است.

متغیر های تغییرپذیر رو با کلیدواژه ی var و متغیر های تغییر ناپذیر رو با کلیدواژه های val و const در کاتلین تعریف میکنیم.

کلیدواژه ی var

با استفاده از کلیدواژه ی var متغیر های تغییرپذیر در کاتلین ایجاد میکنیم.

مثال:

چند مقدار مختلف به mutable اختصاص میدیم و mutable رو چاپ میکنیم:

var mutable = 44 println(mutable) mutable = 56 println(mutable) mutable = 100 println(mutable)

کلیدواژه ی val

با استفاده از کلیدواژه ی val متغیر های تغییرناپذیر در کاتلین ایجاد میکنیم، متغیر هایی که با این کلیدواژه تعریف میکنیم یک بار زمان اجرای برنامه مقداردهی میشن و مقدارشون در طول اجرای برنامه غیرقابل تغییره و اگه بخوایم تو کد دوباره مقداردهیشون کنیم دچار خطای کامپایل میشیم.

مثال:

val immutable = 3.14 immutable = 6.28 //خطای کامپایل

کلیدواژه ی const

کلیدواژه ی const در کاتلین رو کنار کلیدواژه ی val قرار میدیم. متغیر هایی که با const تعریف میکنیم، زمان کامپایل مقداردهی میشن. اگه مطلب توابع خطی (inline functions) رو مطالعه کرده باشید این متغیر ها چیزی شبیه به توابع خطی در کاتلین هستند.

این متغیر ها رو در سه جا میتونیم تعریف کنیم:

۱- به عنوان top level در داخل فایل کاتلین

۲- به عنوان عضو آبجکت های اعلامی (object declarations)

۳- به عنوان یکی از اعضای companion object در کلاس کاتلین.

نکته:

برای تعریف متغیر با کلیدواژه ی const مقداری که به متغیر اختصاص میدیم باید نوع String یا Primitive باشه (Int، Long، Double، Short، ...)

چون این متغیر ها فقط زمان کامپایل مقداردهی میشن بنابراین نمیتونیم با توابع و پراپرتی هایی که زمان اجرا صدا زده میشن مقداردهیشون کنیم:

// صحیح const val DOMAIN: String = "https://skybirdbits.github.io" val currentTime: Long = System.currentTimeMillis()
//غلط const val DOMAIN: String = "https://skybirdbits.github.io" const val CURRENT_TIME: Long = System.currentTimeMillis()

مثال

const val LABEL_NAME: String = "Name:" const val LABEL_AGE: String = "Age:" const val LABEL_BIRTHDAY: String = "Birthday:" fun main(){ val input = Scanner(System.in) var birthday = 2024 val name = input.next() val age = input.nextInt() birthday = birthday - age println("$LABEL_NAME $name $LABEL_AGE $age $LABEL_BIRTHDAY $birthday") }

خلاصه

- متغیر ها در کاتلین به دو دسته ی تغییر پذیر و تغییرناپذیر تقسیم میشن.

- متغیر های تغییرپذیر رو با var و متغیر های تغییرناپذیر رو با val و const ایجاد میکنیم.

- هنگام تعریف متغیر با کلیدواژه ی val متغیر مقدارش ثابت و زمان اجرا مقداردهی میشه.

- هنگام تعریف متغیر با کلیدواژه ی const متغیر زمان کامپایل مقداردهی میشه.

- متغیر های const رو میتونیم به عنوان تاپ لول، عضو object declaration و عضو companion object ایجاد کنیم.

- به متغیر هایی که با const ایجاد میکنیم فقط میتونیم مقادیر String و یا Primitive Type ها رو اختصاص بدیم.

arrow_drop_up
کپی شد!