متغیر ها در Dart

یک متغیر فضای نامداری در حافظه برای ذخیره مقادیر است. به عبارت دیگر متغیر ها ظرفی برای مقادیر در برنامه هستند. به نام مقادیر شناسه می گویند. قواعد نام گذاری برای متغیر ها مانند زبان ها ی دیگر است:

  • شناسه ها نمی توانند کلمات کلیدی باشند
  • شناسه ها می توانند شامل حروف الفبا و اعداد باشند
  • شناسه ها نمی توانند شامل فضای خالی و کاراکتر ها ی خاص باشند الیته $ و _ استثنا هستند و در نامگذاری متغیر ها می توان از آن ها استفاده کرد.
  • نام متغیر ها نباید با اعداد شروع شوند

متغیر ها باید قبل از استفاده اعلان شوند(اعلان نه تعیین نوع! گفتیم که دارت زبانی optionally typed است). برای اعلان متغیر ها از کلمه کلیدی var استفاده می شود.

var name = 'Reganto';

دارت زبانی کاملا شی گراست(یا من این طور برداشت کردم) بنابراین متغیر ها در دارت تنها ارجاع به مقدار را ذخیره می کنند و نه خود مقادیر را!

String name = 'Reganto';

در متغیر name آدرس مقدار ذخیره شده ی Reganto در حافظه قرار می گیرد. همان طور که قبلا گفته شد دارت زبانی optionally typed است بنابراین می توان گفت تعیین نوع متغیر ها از قبل، انتخابی است. اگر نوع متغیر ها از قبل مشخص شود(نگرش استاتیک) برنامه قبل از اجرا نوع متغیر ها را چک می کند و این باعث ثبات در برنامه می شود اما اگر نوع متغیر ها از قبل مشخص نشود(نگرش دینامیک) برنامه در زمان اجرا (runtime) نوع متغیر ها را تعیین می کند و این باعث انعطاف پذیری در برنامه خواهد شد. در نگرش ایستا مانند زبان های کامپایلری همچون ++C رفتار می شود و در نگرش پویا مانند زبان های اسکریپتی همچون python رفتار می شود.

String name = 'Reganto';
int number = 10;

مثال :

void main() {
    String name = 1;
}

اگر این برنامه اجرا شود، خطایی به صورت زیر نمایش داده می شود:

sample.dart:2:17: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
Try changing the type of the left hand side, or casting the right hand side to 'String'.
  String name = 1;

این خطا بیانگر آنست که مقدار نسبت داده شده به متغیر name با نوع تعیین شده برای آن مطابقت ندارد. متغیر هایی که اعلان می شوند اما مقدار اولیه نمی گیرند دارای مقدار null هستند. مثال :

void main() {
    int num;
    print(num);
}

خروجی این کد به صورت زیر است:

null

متغیر های که نوع آن ها از قبل تعیین نشده است، به صورت ضمنی به صورت dynamic اعلان می شوند. متغیر ها می توانند به صورت صریح با کلمه ی کلیدی dynamic نیز تعیین شوند. مثال:

void main() {
    dynamic name = 'Reganto';
    print(name);
}

خروجی این قطعه کد به صورت زیر است:

Reganto

کلمات کلیدی final و const

کلمات کلیدی final و const برای اعلان ثوابت استفاده می شوند.دارت از تغییر مقدار متغیر هایی که با کلمات کلیدی final یا const اعلان شده اند، ممانعت به عمل می آورد.

const برای تعیین ثوابت زمان کامپایل استفاده می شود. متغیر هایی که با کلمه ی کلیدی const اعلان می شوند، به صورت ضمنی final هستند!

این دو کلمه ی کلیدی به صورت های زیر می توانند استفاده شوند:

  • Final

final variable_name

OR

final data_type variable_name

  • Const

const variable_name

OR

const data_type variable_name

مثال ها:

void main() {
    final number = 10;
    print(number);
}

خروجی :

10
void main() {
    const pi = 3.14;
    const area = pi * 10 * 10;
    print('Erea is ${area}');
}

خروجی:

Erea is 314

تنها const برای اعلان ثوابت زمان کامپایل استفاده می شود. مقدار این ثوابت در زمان اجرا تعیین می شود

هر گونه تلاش برای تغییر متغیر هایی که با کلمات final یا const تعیین شده اند منجر به ایجاد خطا خواهد شد. مثال:

void main() {
    final int number = 10;
    final int value = 20;
    value = 30;
}

خطا به صورت زیر خواهد بود:

'value', a final variable, can only be set once. Try making 'value' non-final

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
طراح قالب : عرفـــ ـــان قدرت گرفته از بلاگ بیان