Dart Const (Introduction)
با یک مجموعه مقاله جذاب از Flutter Challenge در خدمت شما هستیم. توی این مجموعه کلید واژه const در زبان برنامه نویسی Dart رو به طور دقیق بررسی میکنیم.
ابتدا توضیحات داکیومنت دارت در مورد const و final رو میبینیم.
توی این لینک (dart/language-tour) اینجوری در مورد const و final گفته:
If you never intend to change a variable, usefinal
orconst
, either instead ofvar
or in addition to a type. A final variable can be set only once; a const variable is a compile-time constant. (Const variables are implicitly final.) A final top-level or class variable is initialized the first time it’s used.
اگر هرگز قصد ندارید که یک متغیر رو تغییر بدید به جای استفاده از کلمه کلیدی var از final یا const برای تعریف اون استفاده کنید(یا علاوه بر مشخص کردن نوع متغیر از این کلید واژه ها استفاده کنید).متغیر هایی که به صورت final تعریف شده اند فقط یک بار میتوانند تنظیم شوند(مقدار بگیرند) و قابل تغییر نیستند. متغیرهایی که به صورت const تعریف شده اند ثابت های زمان کامپایل هستند.(توی پرانتز هم میگه که متغیرهای const به صورت ضمنی final هستند.)
بعد از این تعریف چندتا مثال میاره...
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';
name = 'Alice'; // Error: a final variable can only be set once.
یک متغیر رو final گرفته و بعد خواسته مقدارش رو تغییر بده که به ارور خورده.
در ادامه توضیحاتش این رو اضافه میکنه:
Use const for variables that you want to be compile-time constants. If the const variable is at the class level, mark it static const. Where you declare the variable, set the value to a compile-time constant such as a number or string literal, a const variable, or the result of an arithmetic operation on constant numbers:
از const برای متغیرهایی استفاده کنید که می خواهید ثابت زمان کامپایل باشند.اگر میخواهید یک متغیر const در سطح کلاس داشته باشید اون رو static کنید (static const ).وقتی یک متغیر const تعریف میکنید و میخواهید به اون مقدار بدید مقدارش رو برابر با یک ثابت زمان کامپایل (compile-time constant) قرار بدید مانند یک رشته یا عدد (string or number literal) یا ....
بعدش هم این مثال ها رو اورده :
const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere
و در ادامه توضیحات دیگه ای رو میده:
The const keyword isn’t just for declaring constant variables. You can also use it to create constant values, as well as to declare constructors that create constant values. Any variable can have a constant value.
کلید واژه const فقط برای تعریف متغیر های ثابت نیست.شما میتونید از این کلید واژه برای ایجاد مقادیر ثابت (values) و همچنین سازنده هایی که مقادیر ثابت رو ایجاد میکنند استفاده کنید.(منظورش اینه فقط قبل اسم متغیر نمیاد بلکه میتونه قبل اسم سازنده یا قبل مقدار هم بیاد.)
var foo = const [];
final bar = const [];
const baz = []; // Equivalent to `const []`
You can change the value of a non-final, non-const variable, even if it used to have a const
value:
foo = [1, 2, 3]; // Was const []
You can’t change the value of a const
variable:
baz = [42]; // Error: Constant variables can't be assigned a value.
? این جملات و توضیحاتی که به صورت کلمه به کلمه از سایت دارت کپی کردم(و واستون ترجمه کردم) انقد دقیق و مهم هست که باید اون ها رو با آب طلا بنویسیم.ولی همون قدر که مهم و نقطه زن هست برای مخاطبی که برای اولین باره که اون رو میخونه (یا حتا چندمین بار) گیج کننده هست.
اینجوری بهتون بگم که کلمه به کلمه این توضیحات باید تفسیر بشن و بعد از تفسیرش تازه میفهمید که چه مفهوم عمیقی پشت این تعاریف سایت دارت بوده.
???من اینجام برای یه تفسیر خوب و عمیق. ???
پس بزن بریم...
- قسمت اول : بررسی مفاهیم اولیه و معرفی const variables.
- قسمت دوم : بررسی مفهوم const در کلاس (static const).
- قسمت سوم : const values .
- قسمت چهارم : بررسی مفهوم const در کلاس (const constructor).
- قسمت پنجم : استفاده از const در Flutter.
توی هر کدوم از این قسمت ها یه بخشی از داکیومنت رو تحلیل میکنیم و به صورت دقیق و مفهومی تفسیر میکنیم و در نهایت هم به صورت کاملن کاربردی توی فلاتر ازش استفاده میکنیم.??
مطلبی دیگر از این انتشارات
فانکشن بدون پرانتز در دارت
مطلبی دیگر از این انتشارات
داستان Null در دارت(میرزا قلی کلاس آنلاین برگزار میکند)
مطلبی دیگر از این انتشارات
داستان Null در دارت(دادگاه رسیدگی به اتهامات دارت-1)