در زبان برنامهنویسی دارت، دو واژه Constants و Final به کار میروند که هر دو به معنای ثابت هستند.
Constants یک مقدار ثابت در برنامه هستند که پس از تعریف نمیتوان آن را تغییر داد. در دارت، این ویژگی توسط کلیدواژه const مشخص میشود. برای مثال:
const pi = 3.14;
در این مثال، مقدار pi به 3.14 تعیین شده و پس از تعریف، قابل تغییر نخواهد بود.
Final نیز مقداری ثابت را مشخص میکند، اما با این تفاوت که میتوان آن را در اجرای برنامه تغییر داد. در دارت، این ویژگی توسط کلیدواژه final مشخص میشود. برای مثال:
final int x = 10;
در این مثال، مقدار x به 10 تعیین شده و اگرچه این مقدار در اجرای برنامه تغییر پذیر است، اما یک بار تعیین شده و در اجرای برنامه هیچگاه تغییر نخواهد کرد.
با توجه به تفاوت بین Constants و Final، اگر میخواهید یک مقدار ثابت تعریف کنید که قابل تغییر باشد، از Final استفاده کنید. اگر هم میخواهید یک مقدار ثابت تعریف کنید که در اجرای برنامه قابل تغییر نباشد، از Constants استفاده کنید.
همچنین مقدار Final میتواند در زمان اجرای برنامه به آن ارجاع داده شود و در طول زمان تغییر کند. برای مثال، میتوانید یک متغیر Final از نوع لیست تعریف کنید و در طول زمان عناصر آن را به دلخواه تغییر دهید، اما نمیتوانید خود متغیر Final را تغییر دهید.
final List<String> colors = ["red", "green", "blue"];
colors.add("yellow"); // امکان دارد
colors = ["purple"]; // خطا
در این مثال بالا متغیر colors یک متغیر Final از نوع لیست است که میتوان عناصر آن را تغییر داد، اما نمیتوان خود متغیر را تغییر داد.
در مورد Constants و Final باید توجه داشت که اینها فقط در زمان کامپایل مقداردهی میشوند و در زمان اجرای برنامه نمیتوان آنها را تغییر داد. بنابراین، برای تعیین مقدار متغیرها در زمان اجرای برنامه باید از روشهای دیگری مانند پارامترها و فراخوانی توابع استفاده کنید.
همچنین باید توجه داشت که Constants و Final فقط برای متغیرهای محلی قابل تعریف هستند و برای متغیرهای گلوبال و ثابتهای کلاس، باید از کلیدواژه static const یا static final استفاده کنید.
class Circle {
static const double pi = 3.14;
final double radius;
Circle(this.radius);
double get area => pi * radius * radius;
}
در این مثال قبل متغیر pi یک ثابت کلاس است که به صورت static const تعریف شده است و متغیر radius نیز یک متغیر محلی از نوع Final است که در کانستراکتور Circle مقداردهی شده است.
در کل، Constants و Final در دارت برای تعریف مقادیر ثابت و قابل تغییر در زمان اجرای برنامه استفاده میشوند و به کمک آنها میتوانید از ایجاد اشتباهات ناشی از تغییر مقادیر ناخواسته در طول زمان جلوگیری کنید.
همچنین، Constants و Final در دارت میتوانند به صورت مجموعهای از مقادیر نیز تعریف شوند. به این صورت که با استفاده از کلیدواژه const یک مقدار ثابت از چند مقدار تعریف شده ایجاد میشود.
const myList = const [1, 2, 3];
در این مثال، متغیر myList یک ثابت از نوع لیست است که با استفاده از کلیدواژه const و تعیین مقدار لیست [1, 2, 3] تعریف شده است.
با استفاده از Constants و Final در دارت، میتوانید کد خود را بهبود بخشید و از ایجاد اشتباهات احتمالی جلوگیری کنید. بنابراین، برای هر برنامهنویس حرفهای، استفاده صحیح از این ابزارها بسیار مهم است.